在用户新的环境中微信退款报javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)。
我们都知道微信支付的退款接口使用的是双向证书认证,在发送请求的时候同时要把我们自己的微信CA证书一起发送到微信服务器。
我们这个supportedProtocols参数一开始只有TLSv1,后来我把TLSv1.1和TLSv1.2加入,成功退款,也可以直接不指定该参数,传null即可。
后来还是感觉这个不是问题的根本原因,因为这套代码我们还在其他很多项目使用,目前均没有问题,后来查到一个说法是我们自己的jdk把TLSv1这个版本给禁止了,查看xxx/openjdk/jre/lib/security下边的java.security文件,发现
jdk.tls.disabledAlgorithms这个属性果然有TLSv1,而且还有TLSv1.1。
删除
TLSv1 即可