SSLSocket.getEnabledProtocols()
메서드는 [SSLv2Hello, SSLv3, TLSv1]
을 반환합니다. JSSE는 하지 지원을하지 말 두 (틀림없이) 이전 참조를왜 Java의 SSLSocket이 버전 2 클라이언트를 보냅니 까?
main, WRITE: TLSv1 Handshake, length = 81
main, WRITE: SSLv2 client hello message, length = 110
하지만이 발견 : 나는 connect()
전화를 내가 SSL 디버깅이 켜져있을 때 그리고 실제로, 나는 V2 클라이언트 인사를 사용하는 것을 볼 수 SSL 버전 2 :
Fundamental Networking in Java에서 :
'SSLv2Hello는'자바는 SSLv2의 '헬로 메시지'로 핸드 쉐이크를 개시 할 수있는 의사 프로토콜입니다. 이것은 이 아니며은 Java에서 전혀 지원되지 않는 SSLv2 프로토콜을 사용합니다.
그리고 JSSE Reference Guide에서
는 :지금, 나의 이해는 버전 2.0 클라이언트 인사 만 클라이언트 가 지원 SSL 버전 2.0을 수행 할 때 전송되어야한다는 것입니다. RFC 2246에서 : SSL 버전을 지원J2SDK 1.4의 JSSE 구현하고 나중에 SSL 3.0 및 TLS 1.0을 구현합니다. SSL 2.0을 구현하지 않습니다.
TLS 1.0 클라이언트 2.0 서버는 SSL에게 버전 2.0 클라이언트 인사 메시지 [SSL2] ... 경고를 보내야합니다 : 능력을 2.0 클라이언트 인사 메시지를 단계적으로 폐지됩니다 버전을 보내 모든 서둘러.
그럼 Java에서 왜 사용합니까?
SSLv2Hello는 기본적으로 Sun/Oracle Java 6의 JSSE에서는 켜져 있지만 Java 7 이상에서는 켜지지 않습니다. Java 6의 경우 www.howismyssl.com을 사용하여 연결을 여는 경우와 같은 문제가 발생합니다. – eckes