JDK1.6 连接Sqlserver2008R2 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

问题背景:由于项目中必须得用JDK6来作为Java环境,于是连接SQLServer 2008R2时出现了com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“Java.lang.RuntimeException: Could not generate DH keypair”。这样的错误。

环境:win10 64位 ,SqlServer 2008R2,eclipse

希望目标:JDK6不更换,连接SQLServer2008R2


第一步:
下载两个jar包:bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar
 
第二步:将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\java\jdk1.6.0.43\jre\lib\ext

打开java.security文件:在JDK安装目录\jre\lib\security下的java.security文件。

找到security.provider.1=sun.security.provider.Sun换成

security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider

注意事项:改完以后,在运行Tomcat时,会报错,但此时数据库是可以连接成功的。(不改和原因报的错误是一样的)

JDK1.6 连接Sqlserver2008R2 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

(此步不配置也可以正确)第三步:将"D:\java\jdk1.6.0.43\jre\lib\ext"添加到系统环境变量CLASSPATH中。如图
JDK1.6 连接Sqlserver2008R2 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接


重新执行连接数据库程序就可以