前言
这是前言
参考链接:
记一次No appropriate protocol (protocol is disabled or cipher suites are inappropriate)调用异常及解决办法
Java调用ssl异常(javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or ci
java 程序使用SSLV3协议
设备接入高版本JDK与SSL协议问题解决方案
HTTPS如何设置TLS协议版本 JAVAX.NET.SSL.SSLEXCEPTION: RECEIVED FATAL ALERT: PROTOCOL_VERSION)
一、问题的出现
在使用三方jar包进行调用的时候,远程服务器返回来报错 No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
查询后发现是传输层协议设置的问题,但jar包中使用的是
SSLContext sc = SSLContext.getInstance("SSLv3");
jdk原本设置(C:\Program Files\Java\jdk1.8.0_144\jre\lib\security)是没有禁用TLSv1,禁用了SSLv3,理论上原本应该是无法正常调用了,但是居然可以正常调用 ,后续查看了httpclient的debug日志,发现使用的协议实际上是TLSv1,注意negotiated protocol(谈判达成的协议): TLSv1 ,有点质疑前面getInstance("SSLv3")的意义所在
最后查看了远程服务器的连接协议,为TLS1.2,感觉这个必须双方都支持的协议才行,所以最后使用的协议是TLSv1
二、TLS及SSL详解
挖坑后填
结语
欢迎关注我的公众号