是否有一种方法来防止javax.net.ssl.SSLHandshakeException在Unity中,因为服务器不支



有时Unity中的www类会返回一个错误

javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7a819eb0: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x56aff990:0x00000000)

我假设www类使用SSLv3服务器不支持这个,所以,它出现了这个错误。

是否有办法配置www类行为使用TLSv1.1/TLSv1.2代替?奇怪的是,这种错误只是偶尔发生,而不是总是发生。有时我也在SSL错误发生的同时得到java.io.FileNotFoundException: <my_url>

有时 www类返回错误

"javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException"

尝试使用不同的http客户端,看看是否可以重现此错误。可能出现此错误的原因有很多,但您没有明确说明为什么您认为这是由于服务器不支持TLS 1.1/1.2。下面是我解决这个问题的步骤:

1)确保使用-Djavax.net.debug=all(或您可以使用的任何详细日志标志)标志来获取详细日志消息。这对于解决细微的SSL错误至关重要。此标志应该提供有关握手的详细日志记录,包括密码套件和SSL版本协商。

2)可以使用openssl s_client -connect server.com:443 -ssl3来确定服务器是否支持ssl3。尝试不同的版本,看看服务器支持什么。

3)重要。如果您的客户端不支持SNI而服务器支持SNI-您将得到此错误消息。这就是为什么我建议尝试不同的HTTP客户端(确保其中至少有一个支持SNI)并检查SNI是否是您的问题的原因。

好运。

最新更新