https – SSL错误的解决方法

我正在连接的https服务器的SSL实现中似乎存在错误;问题最初出现在我的应用程序中,但我已经使用openssl命令行实用程序调试/重现它,所以我相当确定它与我的应用程序无关.

如果我连接到除-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”,这是我在应用程序中看到的原始问题.

目前有很多可能的解决方法可以提出来,但我理想的是寻找一些通用的东西,而不是特殊的外壳这个特定的服务器,所以我希望有一种“标准”的解决方法.

最佳答案 似乎问题实际上是由RFC 5077会话票证扩展引起的;禁用此功能(例如,通过将-no_ticket传递给openssl)允许TLSv1 ClientHello成功使用远程服务器.由于我在我的应用程序中并不特别需要此扩展,因此这种解决方法似乎是最合适的方法.

一个小小的研究表明问题可能只是空的会话票扩展,但我没有费心去弄清楚这个特定的服务器是否有非空的问题.

点赞