微信提現報錯:protocol is disabled or cipher suites are inappropr

邢闖洋發表於2021-12-01

前言

今天在新的伺服器上搭建 Java 環境,從 Oracle 官網上下載了最新的 jdk 版本 1.8.0_311,然後上傳到伺服器 jar 包,啟動 jar 包,這些常規操作。本以為這個專案搭建就此結束,但是當測試提現功能時,伺服器突然報錯:No appropriate protocol (protocol is disabled or cipher suites are inappropr

解決

首先排查了下微信商戶號、支付引數等是否有誤,但若引數有誤的話微信會直接返回相應錯誤,所以不是該問題。

然後將思路轉移到是否是環境問題,則確認了一下之前的伺服器上的 jdk 版本和當前伺服器 jdk 版本是否一致,因為下載的是最新的,所以已經不一致了

經翻閱網際網路文章發現 Java8-291 之後 , 禁用了 TLS1.1, 而我們安裝的是 java8-311。並且該禁用該引數會導致微信提現報錯,所以我們需要放開該限制。

修改 java.security 檔案

首先找到安裝 java 的目錄,如果忘記可以透過環境變數中配置的檢視
環境變數檔案在 etc/profile
我的環境變數檔案如下:

# Java
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

所以我的目錄是

vim /usr/local/java/jre/lib/security/java.security

然後搜尋 jdk.tls.disabledAlgorithms=
可找到:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

然後刪掉 TLSv1, TLSv1.1, 變成如下:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

然後儲存檔案,在重啟 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部落格

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章