>Java >java지도 시간 >Java 1.7로 업그레이드한 후 'SSLProtocolException: handshake warning: unrecognized_name' 오류가 발생하는 이유는 무엇입니까?

Java 1.7로 업그레이드한 후 'SSLProtocolException: handshake warning: unrecognized_name' 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-04 07:01:151007검색

Why Am I Getting an

SSL 핸드셰이크 경고: Java 1.7 업그레이드 후 인식할 수 없는_이름 오류

문제 설명:

이후 Java 1.7로 업그레이드하면 사용자에게 다음과 같은 문제가 발생할 수 있습니다. 웹 서버에 SSL 연결을 설정할 때 "SSLProtocolException: 핸드셰이크 경고: unrecognized_name" 오류가 발생했습니다. 이 문제는 일반적으로 자체 서명되었거나 잘못 구성된 서버 인증서에 액세스하려고 할 때 발생합니다.

원인:

Java 1.7에서는 기본적으로 SNI(서버 이름 표시)에 대한 지원을 도입합니다. 대부분의 웹 서버는 SNI를 효과적으로 관리하지만 잘못 구성된 특정 서버는 SSL 핸드셰이크에서 "인식할 수 없는 이름" 경고를 반환할 수 있으며, 이는 Java를 제외한 대부분의 클라이언트에서 무시됩니다.

해결 방법:

이 문제를 해결하려면 다음 중 하나를 사용하세요. 해결 방법:

명령줄을 통해 SNI를 비활성화합니다.

다음 명령줄 옵션을 사용하여 애플리케이션을 실행합니다.

java -Djsse.enableSNIExtension=false yourClass

이렇게 하면 전역적으로 비활성화됩니다. 전체 애플리케이션에 대한 SNI

Java에서 SNI 비활성화 코드:

또는 SSL 작업 전에 "jsse.enableSNIExtension" 속성을 설정하여 프로그래밍 방식으로 SNI를 비활성화할 수 있습니다.

System.setProperty("jsse.enableSNIExtension", "false");

인식되지 않는_이름 경고 처리:

잘못 구성된 서버를 지원하고 싶다면 SNI를 계속 활용하는 동안:

  1. 원하는 호스트 이름으로 SSLSocket을 생성합니다.
  2. 핸드셰이크(sslsock.startHandshake())를 시작하려고 시도합니다.
  3. unrecognized_name 오류가 발생하면 호스트 없이 새 SSLSocket을 생성하여 SNI를 비활성화합니다. 이름.

중요 사항:

SNI를 비활성화하면 보안 모범 사례가 손상될 수 있습니다. 가능하다면 이 문제를 방지하려면 SNI를 올바르게 지원하도록 서버를 구성하세요.

위 내용은 Java 1.7로 업그레이드한 후 'SSLProtocolException: handshake warning: unrecognized_name' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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