此方法適用於JDK1.8,應用場景常見於window server操作系統
網上有不少人遇到過使用jdbc連接sqlserver出錯的情況,錯誤信息爲
錯誤一:
驅動程序無法通過使用安全套接字層(SSL)加密與 SQL Server 建立安全連接。
java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
原因:
JDK7/8後添加了安全機制,導致這個問題出現
solve:
修改jre\lib\security\java.security
jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \
RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \
EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC
修改爲:
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
錯誤二:(都是一類的錯,但是細節不同)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 驅動程序無法通過使用安全套接字層(SSL)加密與 SQL Server 建立安全連接。錯誤:“SQL Server 未返回響應。連接已關閉。 ClientConnectionId:b441ca70-fe1b-4cde-9954-4f8251d62979”。
修改jre\lib\security\java.security,刪除jdk.tls.disabledAlgorithms中的3DES_EDE_CBC
重啓服務,問題解決!