有一个项目广泛使用JSSE.
我偶尔发现┅些握手失败并进行了跟踪:如果客户端协商了TLS,并且服务器使用SSLv3答复,则握手失败
为什么会这样我认为TLS和SSLv3几乎可以互换.
不是吗如果我更改垺务器端以始终答复TLS,是否有机会破坏某些东西?
TLS 1.0内部是SSL 3.1.客户端和服务器可以接受使用其中一个或两个;在握手期间,客户端发送它知道的最高协议版本,并且服务器应选择它支持的最高版本,该最高版本并不总是比客户端发送的最高.
我的猜测是,当您将客户端配置为使用TLS时,客户端会將其理解为“仅使用TLS 1.0”:客户端发送“ 3.1”,并且如果服务器配置为响应“ 3.0”,则客户端将在逻辑上完全拒绝连接.
您应该做的是找到一种配置服務器以接受3.0和3.1的方法,从而使用客户端宣布的任何协议版本.或者,将客户端配置为声明它知道3.1,但如果服务器这样说,则它也接受“降级”到3.0.