2009-04-01 6 views
4

연결중인 https 서버의 SSL 구현에 버그가있는 것 같습니다. 문제는 처음에는 내 응용 프로그램에서 발생했지만 이후 디버깅/openssl 명령 줄 유틸리티를 사용하여 재현 해왔다. 그래서 나는이 응용 프로그램과 관련이 없다는 것을 확신합니다.SSL 버그에 대한 대안

-connect 이외의 옵션없이 원격 서버에 연결하면 OpenSSL은 SSLv2 CLIENT-HELLO를 보내고 서버는 TLSv1 ServerHello로 응답하며 모든 것이 정상적으로 진행됩니다.

-ssl3으로 연결하면 OpenSSL이 SSLv3 ClientHello를 보내고 서버가 SSLv3 ServerHello로 응답하며 다시 정상적으로 작동합니다. 내가 -no_ssl2 또는 -tls1로 연결하는 경우

그러나,은 OpenSSL은 TLSv1의의 ClientHello를 전송하고, 서버는 내 응용 프로그램에서보고 된 원래 문제가있는 "TLS 1.0 Alert [length 0002], fatal unexpected_message"로 응답합니다.

이 시점에서 스스로 제안 할만한 여러 가지 가능한 해결 방법이 있지만이 특정 서버를 특별하게 취급하는 것이 아니라 일반적인 무엇인가를 찾고 있습니다. 그래서 나는 "표준"일종의 해결 방법이 있기를 바라고 있습니다. 이것 때문에.

답변

2

실제로 문제는 RFC 5077 세션 티켓 확장에 의해 발생한 것으로 보입니다. 예를 들어을 openssl에 전달하여이 기능을 비활성화하면 TLSv1 ClientHello가 원격 서버에서 성공할 수있었습니다. 내 응용 프로그램에서이 확장을 특별히 필요로하지 않기 때문에이 해결 방법은 진행하기에 가장 적합한 방법 인 것 같습니다.

약간의 연구에 따르면이 문제는 단지 공백 세션 티켓 확장 일 수 있지만이 특정 서버에 비어 있지 않은 서버에 문제가 있는지 파악하려고 노력하지 않았습니다.