답변:
흥미로운 질문은 내 의견에 따라 다릅니다. 세션이 암호화되어 있다는 점에서 여전히 보호되지만 CA 루트 인증서를 사용자 / 클라이언트에게 배포하지 않으면 올바른 SSL 인증서인지 알려줄 방법이 없습니다. 내부 테스트 / 개발 프로젝트의 경우이 방법이 효과적입니다. 사용자에게 배포하는 데 사용하는 루트 CA 인증서 (Windows의 그룹 정책 및 Linux / BSD의 openssl 명령 줄을 통해 수행 할 수 있음)를 생성 한 다음 해당 루트 인증서를 CSR 서명 사용자에게 경고 또는 아무것도 표시되지 않으며 내부 CA가 인증서에 서명 한 것을 알고 있습니다.
이것을 확신 할 수없는 외부 사이트의 경우 연결을 통해 암호 또는 기타 중요한 정보를 보내는 경우 자체 서명 된 인증서가 SSL을 사용하지 않는 것보다 낫습니다.
그러나 긍정적 인면 에는 매우 저렴한 "상업용"인증서 발급자가 많으며 GoDaddy 가 그 중 하나입니다. 연간 약 40 유로의 증명서를받을 수 있습니다. GoDaddy는 OpenSource 프로젝트 웹 사이트에 무료 인증서를 제공하기도합니다.
좁은 기술적 근거와 일반적인 근거에 대해 한 번은 동의하지 않을 것입니다.
좁은 기술적 근거는 OP가 자체 서명 된 인증서에 대해 물었고 다른 여러 답변은 사설 CA가 서명 한 인증서를 나타내는 것으로 약간 다른 문제입니다. 그러나 그다지 다르지 않으므로 실제로 전달할 때 참고 사항입니다.
주요 이의 제기는 상업적으로 서명 된 인증서가 사소한 비용 이상인 한 일년에 $ 40 가이 지구상의 많은 사람들에게 사소한 비용 이 아니라면 스스로 서명 한 인증서가 중요한 역할을한다는 것입니다. 인터넷 보안 의 한계가 인정되는 한 .
자체 서명 된 인증서는 내 known_hosts
파일 의 ssh 키와 같습니다 . 독립적 인 검증 없이는 내가 믿는 시스템과 대화하고 있다고 확신 할 수 없습니다. 하지만 지금 이야기하고있는 시스템이 내가 대화를한다고 생각한 마지막 때와 같은 시스템임을 확신 할 수 있습니다 . 우리는 항상 ssh 키를 캐시하며, 아직 자신의 known_hosts
파일 에서 공개 키의 일부 이상을 독립적으로 검증 한 시스템 관리자를 만난 적이 없습니다 .
자체 서명 된 인증서 (및 일반적으로 유효하지 않은 CA가 서명 한 인증서)는 SSL을 확인하지 않는 한, SSL을 사용하지 않는 것보다 훨씬 낫습니다. DNS 레코드의 다른 쪽 끝과 현재 회선에있는 모든 men-in-the-middle. 이들이 독립적으로 인증서를 확인하면 인증 및 암호화는 인증 된 CA가 서명 한 인증서에서 제공하는 것보다 강력합니다.
또한, 사람들은 원 및 전용 인터넷 보안 만병 통치약으로 인식 CA에 의해 서명 된 인증서의 사용을 제시하고자하는 것은 다음과 같은 문제에 대해 열심히 생각해야 할 수 있습니다 표준 모질라 번들에서 중국 정부의 서명 CA의 포함 , 그리고 Comodo가 서명 한 사기성 SSL 인증서 .
known_hosts
@MadHatter가 참조 하는 것에 대한 단서가 없습니다 .
사용자가 CA 인증서를 설치하지 않은 외부 사이트 (가장 일반적인 경우)의 경우 , 자체 서명 된 인증서는 잘못된 보안 감각을 제공 하므로 쓸모없는 것보다 나쁩니다.
먼저, 사전 설치된 CA 인증서가 없으면 사용자는 인증서가 실제로 공격자가 아닌 사용자로부터 온 것인지 어떻게 확인합니까? 물론 인증서 필드 (CN, 지문 등)를 일치 시켜서 이제 인증서를 확인하기 위해 사이드 채널이 필요합니다. 몇 가지 사례에서 지원 라인 운영자 (확인을 위해 사이드 채널 로 사용 했어야 함)가 의미 하는 바를 전혀 모릅니다 . 또한 이러한 사이드 채널을 운영하는 것은 신뢰할 수있는 CA 서명 인증서를 얻는 것보다 훨씬 비싸므로 사용자는 당신을 맹목적으로 신뢰해야합니다.
둘째, 사용자가받는 무서운 경고는 정당한 이유 때문에 두렵습니다. 사용자는 제시된 인증서를 확인할 수 없거나 확인할 수 없기 때문에 데이터를 Elbonian Haxx0r D00dz 로 안전하게 전송할 수 있습니다 .
셋째, 모든 최악은, 당신이 사용자를 둔감하고 있습니다 : "글쎄, 그들은 내가가 그 경고를 무시하도록 나에게 말했다 https://mysite.example.com/을 하고, 모루는 하지 않았다 내 머리에 드롭, 그리고 내 금붕어도 죽지 않았습니다. sooooo, 그것은 실제 의미가없는 또 하나의 경고 상자라는 것을 의미합니다. 따라서이 상자를 발견 할 때마다이 상자를 무시할 수 있습니다. 어쨌든 멋진 자물쇠 아이콘이 생겼습니다.
즉, 보호 수준은 일반 HTTP에 필적 (제외 온 - 더 - 와이어 스니핑 : 데이터 전송 암호화하고 있지만, 그 엔드 포인트 확인하지 않고 오히려 빈혈 기능입니다)하지만, 느낌 보호가 부당하게 높은 . 나쁜 자동차 비유 : "ABS를 가지고 있기 때문에 나쁜 상황에서 더 안전하게 운전할 수 있습니다"– ABS는 실제로 자동차에 존재하지 않고 자동차 판매 브로셔에만 존재합니다.
추천 자료 : OWASP SSL 모범 사례
TL : DR : 공개 사이트에서 자체 서명 된 인증서를 사용하면 한 번에 한 명의 실마리가없는 사용자가 인터넷을 더 나쁜 곳으로 만들고 있습니다.
다릅니다. 보안이 더 안전하다고 생각되면 잘못된 보안 감각으로 위험한 일을하기로 선택하면 위험이 증가합니다. 기능적으로 HTTP와 동등한 것으로 취급하면 약간 더 안전하다고 말하고 싶습니다.
SSL / HTTPS가 없으면 네트워크 (또는 로그인 한 사람의 로컬 네트워크)에 wireshark가있는 사용자는 일반 텍스트로 전송 된 사용자 이름 / 암호를 간단하게 듣고 캡처 할 수 있습니다.
자체 서명 된 SSL을 사용하면 간단히들을 수는 없지만 이제는 사이트를 위조하고 DNS를 변경하여 MITM (Man-Middle) 공격을 수행해야합니다. 이것은 여전히 위협이지만 달성하기가 훨씬 더 어렵습니다.
자체 서명 SSL을 사용할 때의 또 다른 문제점은 많은 브라우저가 자체 서명 인증서를 주요 보안 위협으로 취급하고 거대한 빨간색 페이지로 들어가기 전에 (예 : 크롬) 경고한다는 것입니다. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html 이는 큰 불편이 될 수 있습니다.
따라서 결론은 다음과 같습니다. 특히 안전 할 필요가없는 (예 : 신용 카드 데이터, 사회 보장 번호 없음) 실행하고 적절한 인증서를 제공 할 수없는 경우 자체 서명 된 인증서가 의미가있을 수 있습니다. (다른 네트워크 사용자가 자신의 로그인 정보를 쉽게 스니핑하는 것을 방지하기 위해).
"보안"의 의미와 그 정도에 따라 다릅니다.
예를 들어, 브라우저에는 기본적으로 허용되는 CA 세트가 제공됩니다. 즉,이 CA에서 발급 한 모든 인증서는 브라우저에서 승인합니다 (dns 이름과 일치 할 때까지). 이제 어떤 악의 정부가 CA를 소유하고 있거나 CA가 방문하는 사이트에 대한 인증서를 발급하도록 할 수 있다고 상상해보십시오. 그런 다음 MITM을 수행하는 것은 매우 쉽습니다. 연결을 프록시하고 브라우저에 인증서를 보내면 브라우저가 "신뢰할 수있는"CA에서 제공되므로이를 수락합니다. 이들이 DNS 투명 (MITM의 기본)이 될 때까지 이것은 괜찮습니다.
따라서 "허용 된 CA 목록"은이 CA 중 하나가 일부 사악한 정부와 협력 할 때까지 기본적으로 큰 보안 허점입니다. 자신의 CA를 보유하는 것이 훨씬 좋습니다.
물론 자신의 CA 인증서를 클라이언트에 설치할 수도 있기 때문에 회사 나 홈 서버에서 할 수 있습니다. 공용 서버에서는 예외를 추가하거나 인증서를 추가하도록 요청하는 사용자를 처리 할 수 없습니다.
따라서 "보안"의 의미와 범위에 따라 다릅니다. 클라이언트를 소유하고있는 경우 클라이언트 자체에 자체 CA의 인증서를 설치할 때까지 자체 서명이 더 안전합니다.
물론, 모든 클라이언트를 소유하고 있지 않으므로 공개 웹 사이트에서 할 수 없습니다. 따라서 안전하지 않은 다른 행동으로 위험에 처하게됩니다.