openssl의 SSL 인증서에 CN/호스트 이름 확인이 필요합니까? 왜? [폐쇄]

openssl의 SSL 인증서에 CN/호스트 이름 확인이 필요합니까? 왜? [폐쇄]

"신뢰 인증서" 및 기타 속성이 있는 경우...이것이 얼마나 중요합니까?

OpenSSL이 이제 구현되었나요? 그렇지 않다면 OpenSSL이 이를 구현하지 않는 이유는 무엇입니까?

답변1

SSL을 사용하는 대부분의 프로토콜/애플리케이션에서 클라이언트는 다음 두 가지 사항을 확인해야 합니다. (1) 서버가 유효한 인증서를 제공합니다. 즉, 인증서가 신뢰할 수 있는 CA에서 발급되었으며 만료, 취소 또는 변조되지 않았음을 의미합니다. (2) 인증서는 실수나 고의적인 공격으로 인해 귀하의 연결이 라우팅된 다른 사람이 아닌 귀하가 의도한 서버에 대한 것입니다. (드물게 서버 인증이 필요하지 않고 기밀만 유지되는 경우에는 명시적으로 인증하지 않는 "anon" 또는 "aNULL" 암호 제품군을 사용하는 것이 좋습니다.)

지금까지 OpenSSL은 (1)을 수행하지만 (2)는 수행하지 않습니다., 일반적으로 신뢰 저장소에 있는 CA 루트 인증서만 지원합니다. 하나의 CA 루트는 수천 또는 수백만 개의 서버 인증서를 "책임"할 수 있습니다. 예를 들어 Verisign이 두 인증서 모두에 인증서를 발급했다고 해서 내 bigbank 계정을 원한다는 의미는 아닙니다 bigbank.com. localdiner.comlocaldiner님과 함께 있어요. 따라서 애플리케이션은 verify_callback에서 또는 핸드셰이크가 완료된 후 (민감한) 데이터를 보내기 전에 (2)를 수행해야 합니다. 다음 주요 버전인 1.0.2에는 인증서 체인 유효성 검사에 대한 향상된 기능이 포함될 계획이며 적어도 어떤 경우에는 이름 유효성 검사도 가능하다고 생각합니다. RFC 2818을 사용하는 HTTPS 또는 RFC 6125를 사용하는 기타 TLS 기반 프로토콜의 경우 제목에 CommonName 및 SubjectAlternativeNames 확장이 있는 경우 이를 확인해야 합니다.

나는 전혀 모른다OpenSSL을 선택하는 이유(그리고 그 전에는 SSLeay)이러지 마세요이미. 일부 특이한 SSL/TLS 애플리케이션에는 표준 CN/SAN 이외의 다른 것이 필요하다고 주장할 수도 있지만 OpenSSL이 일반적인 경우를 처리하고 드문 경우에 대한 콜백이나 옵션을 제공하는 다른 영역도 있습니다. 나는 그것이 아마도 일이 너무 많고 (최근까지) 직원이 부족하다고 생각했습니다.

관련 정보