내 서버가 SSLv3 및 TLS1.0 프로토콜을 모두 허용하도록 구성됩니다. 그러나 몇몇 클라이언트는 핸드 셰이크 매개 변수 아래로 전송하고 서버 안녕하세요 후에 클라이언트는 연결을 끊고 클라이언트 오류 또는 서버인지 확실하지 않은 'handshare failure (40) 경고를 보냅니다.SSLv3 레코드 계층 내에서 TLS 핸드 셰이크
다음은 초기 클라이언트의 헬로 패킷 :
Secure Socket Layer
SSLv3 Record Layer: Client Hello
Content Type: Handshake (22)
Version: SSL 3.0 (0x0300) <-----------------
Length: 103
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 78
Version: TLS 1.0 (0x0301) <-------------
Random
Session ID Length: 0
Cipher Suites Length: 18
Cipher Suites (9 suites)
에 녹화 층은 SSL 3.0하지만 내부의 핸드 쉐이크 프로토콜은 TLS 1.0입니다. 제 질문은 이것이 올바른 작업인가, 즉 각 레이어마다 서로 다른 버전을 사용하는 것입니까? 그것이 어떤 방법일까요? 어디서나 찾을 수 없지만 RFC를 검토했지만 참조를 찾을 수 없습니다. 또한 이러한 요청을 어떻게 내릴 수 있습니까?
EDIT : 문제를 해결하고 해결하는 데 관심이 없습니다. 어떻게 이러한 패킷을 보낼 수 있습니까? 어떤 명령? 이 이름을 어떻게 지정해야합니까?
: 와이어 샤크에 보일 것curl -v -ssl3 https://www.mywebserver.com
curl 명령 위 : 즉 내가 사용 SSL3 또는 TLS1 하나에 컬 또는 OpenSSL을 사용할 수 있지만 모두 기록 층과 악수를 레이어에 동일한 버전을 보낼 것이다
EDIT2 : 이것은 합법적입니까? 나는 주변에 인터넷 검색하고 어떤 예를 찾을 수 없습니다. 어떤 rfc 표준을 위반합니까?
감사
지금까지 게시 한 추적에 문제가 없습니다. 이것은 TLS와 협상하는 일반적인 방법입니다. 경고 주위에 더 많은 데이터를 제공해야합니다. 대부분 클라이언트는 서버 인증서를 신뢰하지 않습니다. – EJP
@ 마르다 니안 : WireShark와 같은 SSL 프록시를 사용하여 SSL 프로토콜을 자세히 살펴보십시오. 대부분 도구를 사용하는 것이 가장 쉬운 것은 아니지만 대부분의 경우 거기에서 잘못된 점을 볼 수 있습니다. 그러나 EJP가 제안한 것처럼 서버 인증서가 신뢰할 수 있는지 확인해야합니다. –