錯誤堆疊:`svn: E175002: java.lang.RuntimeException: Could not generate DH keypair ... Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)`。表明服務器 SSL/TLS 配置使用了**弱 DH 參數 (512/768 位)**,被客戶端 Java 安全提供者拒絕。
# OpenSSL 生成強 DH 參數
openssl dhparam -out dhparams.pem 2048
# Apache httpd ssl.conf
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
# Nginx
ssl_dhparam /path/to/dhparams.pem;
並啟用現代密碼套件 (TLS 1.2/1.3, ECDHE),禁用 DHE_RSA 弱套件。# 找到 jdk.tls.disabledAlgorithms 行,移除或調整 DH 限制
# 原: jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, ...
# 改: jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 768, ...
# 或完全移除 DH keySize 限制 (極不推薦生產)
# 注意:修改影響所有 Java 應用
或啟動參數注入 (僅影響當前 JVM):
-Djdk.tls.disabledAlgorithms="SSLv3, RC4, DES, MD5withRSA, DH keySize < 768"
-Dsvnkit.http.sslProtocols="TLSv1.2,TLSv1.1,TLSv1"
-Dsvnkit.http.sslDisabledAlgorithms="DH keySize < 768"
# 或強制使用不依賴 DH 的套件
-Dhttps.protocols="TLSv1.2,TLSv1.1,TLSv1"
StackOverflow 經典問答:Subclipse Could not generate DH keypair (提供了多種繞過配置細節)。
**繞過客戶端檢查僅為臨時應急**,會降低傳輸加密強度,暴露中間人攻擊風險。**務必推動服務端更新 SSL 配置** 為長期解決之道。生產環境嚴禁降低安全策略。