>Java >java지도 시간 >Java는 SSL 인증서의 서버 이름을 어떻게 확인합니까?

Java는 SSL 인증서의 서버 이름을 어떻게 확인합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-11 20:44:19244검색

How Does Java Resolve Server Names in SSL Certificates?

SSL 인증서 서버 이름 확인 이해

보안 웹 통신 영역에서 SSL 인증서는 서버의 신원을 확인하는 데 중요한 역할을 합니다. . 서버 이름 확인 프로세스는 SSL 인증서에 지정된 이름을 사용하여 HTTPS 연결에서 신뢰를 구축하는 방법을 결정합니다.

SSL 인증서 서버 이름은 어떻게 확인됩니까?

RFC 2818 및 그 후속인 RFC 6125는 서버 이름 확인에 대한 지침을 정의합니다. 이러한 표준에서는 다음을 지정합니다.

  • 인증서에 "dNSName" 유형의 "subjectAltName" 확장이 포함된 경우 이를 ID로 사용해야 합니다.
  • 그렇지 않으면 일반 이름( CN) 인증서의 "제목" 섹션에 있는 필드는 다음과 같습니다.

Java의 SSL 인증서 확인 메커니즘

Java의 SSL 메커니즘은 subjectAltName 확장 우선 순위를 따릅니다. 인증서에 이 확장자가 포함되어 있으면 Java는 지정된 도메인 이름이나 IP 주소를 확인을 위한 ID로 사용합니다. 그렇지 않으면 CN 필드 사용으로 되돌아갑니다. 이 동작은 RFC 2818에 설명된 권장 모범 사례를 따릅니다.

Keytool을 사용한 대체 이름 포함

예, SSL에 대체 이름을 추가할 수 있습니다. keytool을 사용한 인증서. Java 7부터 keytool에는 인증서에 SAN(주체 대체 이름)을 포함할 수 있는 "-ext" 옵션이 도입되었습니다. 요구 사항에 따라 SAN을 "dns:www.example.com" 또는 "ip:10.0.0.1"로 지정할 수 있습니다.

대안으로 OpenSSL

keytool을 사용하는 것이 불편하다면 OpenSSL은 SAN을 통해 SSL 인증서를 생성하는 데 탁월한 옵션입니다. openssl.cnf 구성 파일을 수정하면 "[req]" 및 "[ v3_req ]" 섹션을 사용하여 subjectAltName 확장자를 지정할 수 있습니다. 또한 OPENSSL_CONF 환경 변수를 사용하여 구성 파일의 명시적인 위치를 제공할 수 있습니다.

문제를 해결하려면 인증서에 올바른 서버 이름이 포함되어 있는지 확인해야 합니다. CN 필드에 IP 주소만 포함된 경우 브라우저는 이를 허용할 수 있지만 SAN이 없기 때문에 Java는 이를 신뢰하지 않습니다. keytool 또는 OpenSSL을 사용하여 인증서에 SAN을 추가하면 브라우저와 Java 모두 서버 이름을 올바르게 인식하도록 할 수 있습니다.

위 내용은 Java는 SSL 인증서의 서버 이름을 어떻게 확인합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.