Java 微信提现报错:No appropriate protocol (protocol is disabled or cipher suites areinappropr)
前言
今天在新的服务器上搭建 Java
环境,从 Oracle
官网上下载了最新的 jdk
版本 1.8.0_311
,然后上传到服务器 jar
包,启动 jar
包,这些常规操作。本以为这个项目搭建就此结束,但是当测试提现功能时,服务器突然报错:No appropriate protocol (protocol is disabled or cipher suites are inappropr
解决
首先排查了下微信商户号、支付参数等是否有误,但若参数有误的话微信会直接返回相应错误,所以不是该问题。
然后将思路转移到是否是环境问题,则确认了一下之前的服务器上的 jdk
版本和当前服务器 jdk
版本是否一致,因为下载的是最新的,所以已经不一致了
可以提现的服务器 jdk
版本是 212
当前服务器 jdk
版本是 311
经翻阅互联网文章发现 Java8-291
之后 , 禁用了 TLS1.1
, 而我们安装的是 java8-311
。并且该禁用该参数会导致微信提现报错,所以我们需要放开该限制。
修改 java.security 文件
首先找到安装 java 的目录,如果忘记可以通过环境变量中配置的查看
环境变量文件在 etc/profile
我的环境变量文件如下:
1 | Java |
所以我的目录是
1 | vim /usr/local/java/jre/lib/security/java.security |
然后搜索 jdk.tls.disabledAlgorithms=
可找到:
1 | jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ |
然后删掉 TLSv1
, TLSv1.1
, 变成如下:
1 | jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \ |
然后保存文件,在重启 jar 包,在测试提现就可以提现到账了。
参考文章:
(31条消息) 微信退款 No appropriate protocol (protocol is disabled or cipher suites are inappropr)_YLIHMS的博客-CSDN博客
(31条消息) Java8(291)之后 , 禁用了TLS1.1 , 使JDBC无法用SSL连接SqlServer2008怎么办,以下是解决办法_kfepiza的博客-CSDN博客