자체 서명 된 SSL 인증서는 잘못된 보안 감지입니까?


답변:


25

흥미로운 질문은 내 의견에 따라 다릅니다. 세션이 암호화되어 있다는 점에서 여전히 보호되지만 CA 루트 인증서를 사용자 / 클라이언트에게 배포하지 않으면 올바른 SSL 인증서인지 알려줄 방법이 없습니다. 내부 테스트 / 개발 프로젝트의 경우이 방법이 효과적입니다. 사용자에게 배포하는 데 사용하는 루트 CA 인증서 (Windows의 그룹 정책 및 Linux / BSD의 openssl 명령 줄을 통해 수행 할 수 있음)를 생성 한 다음 해당 루트 인증서를 CSR 서명 사용자에게 경고 또는 아무것도 표시되지 않으며 내부 CA가 인증서에 서명 한 것을 알고 있습니다.

이것을 확신 할 수없는 외부 사이트의 경우 연결을 통해 암호 또는 기타 중요한 정보를 보내는 경우 자체 서명 된 인증서가 SSL을 사용하지 않는 것보다 낫습니다.

그러나 긍정적 인면 에는 매우 저렴한 "상업용"인증서 발급자가 많으며 GoDaddy 가 그 중 하나입니다. 연간 약 40 유로의 증명서를받을 수 있습니다. GoDaddy는 OpenSource 프로젝트 웹 사이트에 무료 인증서를 제공하기도합니다.


이것이 바로 우리가하는 일입니다. 저렴한 인증서로 조심하십시오. 루트 CA가 다소 이상하고 일부는 모든 브라우저와 함께 제공되는 루트 CA 인증서 모음에 있습니다.
wolfgangsz

4
"자체 서명 된 인증서가 SSL을 사용하지 않는 것보다 낫다"를 제외하고 +1-인증서가 MITM에서 제공 한 것이 아니라 인증서인지 확인한 경우 솔직히 말해서, 일반 사용자가 마지막으로 사용한 시간은 언제입니까? (답변에는 푸른 달과 날고있는 돼지가 포함될 것이라고 생각합니다.) 즉, CA 인증서를 사용자에게 배포하지 않고 자체 서명 된 SSL 인증서를 사용하면 사용자는 자신이 얻는 무서운 경고에 민감하지 않게됩니다. "음, 그들은 mysite.example.com에있는 경고를 무시하라고 했어요. 그래서 어디에서나 무시할 수 있습니다. 자물쇠 아이콘을보세요!" 짜잔, 보안의 허위 감!
Piskvor 2016 년

7
@Piskvor, 사실 그것은 브라우저의 결함입니다. 첫째, 브라우저는 일반적으로 이전에 알려지지 않은 자체 서명 된 인증서를 "영구적으로 수용"하는 방법을 제공하지 않으므로 사용자가 모든 로그인시 자신을 위험에 빠뜨리지 않습니다. 둘째, 브라우저는 오래된 일반 HTTP 사용을 권장하지 않으며 잘못된 보안 감각을 만듭니다. 따라서 HTTP는 보안 및 사용자 인식 측면에서 항상 HTTPS보다 나쁩니다 (적어도 경고가 표시됨).
Rotsor

1
@Rotsor : 첫째, Opera에는 내장 기능을 설명하는이 기능이 있으며, FF에는 인증서 순찰 (인증서 변경을 경고하는)이 있습니다. SSL의 모든 것이 브라우저 (IMAPS 등) 인 것은 아닙니다. 둘째, 기존의 수많은 HTTP는 어떻게 브라우저의 결함 사이트에만 해당됩니까? (아니요, HTTPS 전용 브라우저는 브라우저를 탐색 할 수있는 훨씬 작은 Net이 있었기 때문에 절대로 포착되지 않았습니다). 셋째, "경고를 받는다"는 사용자 만 읽을 수 있다면 유용하며, "허용"을 맹목적으로 클릭하지 않아도됩니다. "동의 함을 클릭한다는 것은 이해를 의미한다"는 것은 개발자의 망상입니다.
Piskvor 2016 년

1
@Piskvor는 일부 브라우저가 해당 기능을 제공한다는 것을 알고 있습니다. HTTP의 경우 수행해야 할 작업을 알 수 없지만 (HTTP를 허용하지 않는 것은 분명히 옵션이 아닙니다) SSL이없는 것보다 자체 서명 SSL이 더 많은 보안 관련 경고를 갖는 것은 전혀 잘못이며 브라우저입니다. 결점!
Rotsor

12

좁은 기술적 근거와 일반적인 근거에 대해 한 번은 동의하지 않을 것입니다.

좁은 기술적 근거는 OP가 자체 서명 된 인증서에 대해 물었고 다른 여러 답변은 사설 CA가 서명 한 인증서를 나타내는 것으로 약간 다른 문제입니다. 그러나 그다지 다르지 않으므로 실제로 전달할 때 참고 사항입니다.

주요 이의 제기는 상업적으로 서명 된 인증서가 사소한 비용 이상인 한 일년에 $ 40 가이 지구상의 많은 사람들에게 사소한 비용 이 아니라면 스스로 서명 한 인증서가 중요한 역할을한다는 것입니다. 인터넷 보안 의 한계가 인정되는 한 .

자체 서명 된 인증서는 내 known_hosts파일 의 ssh 키와 같습니다 . 독립적 인 검증 없이는 내가 믿는 시스템과 대화하고 있다고 확신 할 수 없습니다. 하지만 지금 이야기하고있는 시스템이 내가 대화를한다고 생각한 마지막 때와 같은 시스템임을 확신 할 수 있습니다 . 우리는 항상 ssh 키를 캐시하며, 아직 자신의 known_hosts파일 에서 공개 키의 일부 이상을 독립적으로 검증 한 시스템 관리자를 만난 적이 없습니다 .

자체 서명 된 인증서 (및 일반적으로 유효하지 않은 CA가 서명 한 인증서)는 SSL을 확인하지 않는 한, SSL을 사용하지 않는 것보다 훨씬 낫습니다. DNS 레코드의 다른 쪽 끝과 현재 회선에있는 모든 men-in-the-middle. 이들이 독립적으로 인증서를 확인하면 인증 및 암호화는 인증 된 CA가 서명 한 인증서에서 제공하는 것보다 강력합니다.

또한, 사람들은 원 및 전용 인터넷 보안 만병 통치약으로 인식 CA에 의해 서명 된 인증서의 사용을 제시하고자하는 것은 다음과 같은 문제에 대해 열심히 생각해야 할 수 있습니다 표준 모질라 번들에서 중국 정부의 서명 CA의 포함 , 그리고 Comodo가 서명 한 사기성 SSL 인증서 .


아아, "신뢰할 수있는 CA"모델은 실제로 망가졌다. 불행히도, 그것은 사라지지 않습니다 (그리고 그것을 대체하는 것이 더 좋은 것은 없습니다). 항상 그렇듯이 SSL 및 신뢰할 수있는 CA는 마법의 보안 픽스 더스트가 아닙니다. 사용자는 보안을 적극적으로 유지해야합니다.
Piskvor

2
사용자는 현재 DNS 서버로의 경로 무결성 (캐시 중독 가능성 포함) 및 공격 대상 장치에 대한 신뢰 수준을 교육적으로 평가할 수 있습니까? 광산은 DNS가 무엇인지 알지 못하고 다른 상태의 서버에 대한 연결에 대한 교육 된 보안 결정을 내릴 수 없으며 MPLS를 통해 다른 사이트에 연결되며 클라이언트 VPN을 통해 사용자에게 연결됩니다. 암호화되지 않은 커피 숍 와이파이를 통해. 그들에게 책임을주지 마십시오.
Shane Madden

2
@Shane Madden : 이것이 가능한 한 가지 영역은 관리 웹 프론트 엔드입니다. 예를 들어 phpMyAdmin (또는 HTTPS를 통한 SVN). 일반적으로 제한된 수의 사용자 가 있으며 상당한 양의 단서를 포함 합니다. 할아버지가 SSL 인증서 경고의 머리 또는 꼬리를 만들 것으로 기대하지는 않지만 동료 시스템 관리자, 특히 hiradmin이 제어하는 ​​서버 인 경우에는 분명히 이것이 좋습니다. 정원 다양성 사용자는 known_hosts@MadHatter가 참조 하는 것에 대한 단서가 없습니다 .
Piskvor 2016 년

8

사용자가 CA 인증서를 설치하지 않은 외부 사이트 (가장 일반적인 경우)의 경우 , 자체 서명 된 인증서는 잘못된 보안 감각을 제공 하므로 쓸모없는 것보다 나쁩니다.

  • 먼저, 사전 설치된 CA 인증서가 없으면 사용자는 인증서가 실제로 공격자가 아닌 사용자로부터 온 것인지 어떻게 확인합니까? 물론 인증서 필드 (CN, 지문 등)를 일치 시켜서 이제 인증서를 확인하기 위해 사이드 채널이 필요합니다. 몇 가지 사례에서 지원 라인 운영자 (확인을 위해 사이드 채널 로 사용 했어야 함)가 의미 하는 바를 전혀 모릅니다 . 또한 이러한 사이드 채널을 운영하는 것은 신뢰할 수있는 CA 서명 인증서를 얻는 것보다 훨씬 비싸므로 사용자는 당신을 맹목적으로 신뢰해야합니다.

  • 둘째, 사용자가받는 무서운 경고는 정당한 이유 때문에 두렵습니다. 사용자는 제시된 인증서를 확인할 수 없거나 확인할 수 없기 때문에 데이터를 Elbonian Haxx0r D00dz 로 안전하게 전송할 수 있습니다 .

  • 셋째, 모든 최악은, 당신이 사용자를 둔감하고 있습니다 : "글쎄, 그들은 내가가 그 경고를 무시하도록 나에게 말했다 https://mysite.example.com/을 하고, 모루는 하지 않았다 내 머리에 드롭, 그리고 내 금붕어도 죽지 않았습니다. sooooo, 그것은 실제 의미가없는 또 하나의 경고 상자라는 것을 의미합니다. 따라서이 상자를 발견 할 때마다이 상자를 무시할 수 있습니다. 어쨌든 멋진 자물쇠 아이콘이 생겼습니다.

즉, 보호 수준은 일반 HTTP에 필적 (제외 온 - 더 - 와이어 스니핑 : 데이터 전송 암호화하고 있지만, 그 엔드 포인트 확인하지 않고 오히려 빈혈 기능입니다)하지만, 느낌 보호가 부당하게 높은 . 나쁜 자동차 비유 : "ABS를 가지고 있기 때문에 나쁜 상황에서 더 안전하게 운전할 수 있습니다"– ABS는 실제로 자동차에 존재하지 않고 자동차 판매 브로셔에만 존재합니다.

추천 자료 : OWASP SSL 모범 사례

TL : DR : 공개 사이트에서 자체 서명 된 인증서를 사용하면 한 번에 한 명의 실마리가없는 사용자가 인터넷을 더 나쁜 곳으로 만들고 있습니다.


2
@ downvoter : 내 대답이 실제로 부정확 한 부분 을 지적했다면 ( "불편하고 불편하고 구현하기가 귀찮은"대신 "잘못된") 지적합니다 . 보안은 어렵고 "la la la 난 당신을들을 수 없습니다"가는 것은 아무것도 고치지 않습니다.
Piskvor 2016 년

2
답을 공감하지는 않았지만, 아래쪽 화살표의 툴팁 텍스트는 답이 유용하지 않은 다른 이유가 없는데 공수를 나타냅니다. 보안 진자에 대한 잘못된 감각도 다른 방향으로 흔들릴 수 있다고 생각합니다. 최근의 코모도 RA 위반은 "악당"이 완벽하게 합법적 인 인증서를 얻는 것이 그렇게 어려운 것은 아니라는 것을 증명합니다.
mahnsc 2016 년

@ mahnsc : 알림 주셔서 감사합니다; :-) "자체 서명 SSL 인증서가 잘못된 보안 감각입니까?" "예, 다음과 같은 이유로 ..." 그래서 나는 이것이 왜 그렇지 않을까 궁금했다. 나는 반대 입장에서 무언가를 배울 수 있었다. 공감대에서 그렇게 많이.
Piskvor 2016 년

1
@mahnsc : 손상된 CA에 대한 좋은 지적. 루트 CA 목록이 완벽하고 해킹 불가능하다는 말은 아닙니다. 완벽한 보안이 존재하지 않습니다. 그러나 네트워크 게이트웨이에서 캡처 SSL 프록시를 설정 하는 것보다 훨씬 더 많은 노력이 필요 합니다.
Piskvor 2016 년

1
@ mahnsc : SSL 프록시를 설정하는 것이 더 쉽고 SSL 프록시를 설정하고 가짜 인증서 요청이 CA 확인 프로세스를 통해 미끄러지기를 희망하는 것보다 사용자가 경고를 클릭하기를 바랍니다. 우리가 본 것처럼 가능하지만 전자는 수행하기가 훨씬 쉽습니다 (브라우저 사용자는 일반적으로 감사 추적을 유지하지 않기 때문에 나중에 감지하기가 더 어렵습니다).
Piskvor

8

다릅니다. 보안이 더 안전하다고 생각되면 잘못된 보안 감각으로 위험한 일을하기로 선택하면 위험이 증가합니다. 기능적으로 HTTP와 동등한 것으로 취급하면 약간 더 안전하다고 말하고 싶습니다.

SSL / HTTPS가 없으면 네트워크 (또는 로그인 한 사람의 로컬 네트워크)에 wireshark가있는 사용자는 일반 텍스트로 전송 된 사용자 이름 / 암호를 간단하게 듣고 캡처 할 수 있습니다.

자체 서명 된 SSL을 사용하면 간단히들을 수는 없지만 이제는 사이트를 위조하고 DNS를 변경하여 MITM (Man-Middle) 공격을 수행해야합니다. 이것은 여전히 ​​위협이지만 달성하기가 훨씬 더 어렵습니다.

자체 서명 SSL을 사용할 때의 또 다른 문제점은 많은 브라우저가 자체 서명 인증서를 주요 보안 위협으로 취급하고 거대한 빨간색 페이지로 들어가기 전에 (예 : 크롬) 경고한다는 것입니다. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html 이는 큰 불편이 될 수 있습니다.

따라서 결론은 다음과 같습니다. 특히 안전 할 필요가없는 (예 : 신용 카드 데이터, 사회 보장 번호 없음) 실행하고 적절한 인증서를 제공 할 수없는 경우 자체 서명 된 인증서가 의미가있을 수 있습니다. (다른 네트워크 사용자가 자신의 로그인 정보를 쉽게 스니핑하는 것을 방지하기 위해).


0

"보안"의 의미와 그 정도에 따라 다릅니다.

예를 들어, 브라우저에는 기본적으로 허용되는 CA 세트가 제공됩니다. 즉,이 CA에서 발급 한 모든 인증서는 브라우저에서 승인합니다 (dns 이름과 일치 할 때까지). 이제 어떤 악의 정부가 CA를 소유하고 있거나 CA가 방문하는 사이트에 대한 인증서를 발급하도록 할 수 있다고 상상해보십시오. 그런 다음 MITM을 수행하는 것은 매우 쉽습니다. 연결을 프록시하고 브라우저에 인증서를 보내면 브라우저가 "신뢰할 수있는"CA에서 제공되므로이를 수락합니다. 이들이 DNS 투명 (MITM의 기본)이 될 때까지 이것은 괜찮습니다.

따라서 "허용 된 CA 목록"은이 CA 중 하나가 일부 사악한 정부와 협력 할 때까지 기본적으로 큰 보안 허점입니다. 자신의 CA를 보유하는 것이 훨씬 좋습니다.

물론 자신의 CA 인증서를 클라이언트에 설치할 수도 있기 때문에 회사 나 홈 서버에서 할 수 있습니다. 공용 서버에서는 예외를 추가하거나 인증서를 추가하도록 요청하는 사용자를 처리 할 수 ​​없습니다.

따라서 "보안"의 의미와 범위에 따라 다릅니다. 클라이언트를 소유하고있는 경우 클라이언트 자체에 자체 CA의 인증서를 설치할 때까지 자체 서명이 더 안전합니다.

물론, 모든 클라이언트를 소유하고 있지 않으므로 공개 웹 사이트에서 할 수 없습니다. 따라서 안전하지 않은 다른 행동으로 위험에 처하게됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.