JDK 6과 같은 많은 SSL 클라이언트는 SSLv2Hello 프로토콜을 사용하여 서버와 핸드 셰이크합니다. 이 프로토콜을 사용 한다고해서 SSL 2.0 또는 3.0을 사용한다는 의미 는 아닙니다 . 사용할 프로토콜을 결정 하는 것은 단지 악수 일뿐 입니다. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]
그러나 Apache에서 SSLv3 지원을 사용하지 않으면 SSLv2Hello 프로토콜에 대한 지원이 제거됩니다. Apache Tomcat은 SSLv2Hello를 명시 적으로 지원합니다. 즉, 활성화 할 수는 있지만 SSLv3은 활성화 할 수 없습니다.
아파치에서 이것을 할 수있는 방법이 있습니까?
[최신 정보]
이것은 내 프로토콜 구성입니다.
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3
답변
분명히 mod_ssl은 작년에 변경되었습니다 (소스에 대한 정확한 커밋을 찾지 못했지만 “문제”를 발견했습니다). 소스는 이제 다음을 수행합니다.
If SSLProtocol only includes only one Protocol:
Handshake = That Protocol's Handshake Only
Else
Handshake = SSLv2 Handshake
이 설정에 대한 재정의는 없습니다. 당신이 할 수있는 유일한 것은 소스를 편집하고 자신의 버전을 다시 컴파일하는 것입니다. 직접 컴파일하려는 경우 SSLv2 핸드 셰이크 호환성을 강제하기 위해 diff 를 만들었습니다 .
답변
그래서 이것은 모두 문제가 아닌 것으로 나타났습니다. Apache는 위에 게시 한 구성 중 하나를 사용하여 SSLv2 핸드 셰이크를 수락합니다. 핸드 셰이크 오류로 인해 이것이 문제라고 생각했습니다. 서버가 클라이언트의 CA를 신뢰하지 않는 구성 문제 일뿐입니다.