idea连接sql server报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接


运行环境:IDEA2020.1;JDK1.8;SQL SERVER2005;


原始代码

public class rainstormDivision {public static void main(String[] args) {String url = "jdbc:sqlserver://localhost:1433;databaseName=dataOfTest;integratedSecurity=false;";Connection conn;try {conn = DriverManager.getConnection(url,"sa","123456");Statement stat = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库。ResultSet resultSet=stat.executeQuery("SELECT * FROM dbo.ST_STBPRP_B");while (resultSet.next()) {System.out.println(resultSet.getString("STCD"));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

问题描述

com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:f40d8661-b0d3-438c-9077-7475cd35d616


com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:f40d8661-b0d3-438c-9077-7475cd35d616at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3806)at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1906)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:3329)at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2950)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2790)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1663)at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1064)at java.sql.DriverManager.getConnection(DriverManager.java:664)at java.sql.DriverManager.getConnection(DriverManager.java:247)at rainstormDivision.rainstormDivision.main(rainstormDivision.java:18)
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat sun.security.ssl.Alerts.getSSLException(Alerts.java:192)at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509)at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1795)... 8 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)at sun.security.validator.Validator.validate(Validator.java:260)at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:105)at com.microsoft.sqlserver.jdbc.HostNameOverrideX509TrustManager.checkServerTrusted(SQLServerTrustManager.java:86)at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:922)at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491)... 16 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)... 24 more

原因分析:

可能是因为使用的JDBC驱动版本太高,原本使用的是msscl-idbc-11.2.0.jre8.jar,但一直报上述错误,网上搜了很多方法,删除java.security里面的3DES_EDE_CBC字符等,均未解决,然后看到有人说原因可能是高端本的驱动可能不太兼容较低的sql server,尝试换了一个低版本的驱动sqljdbc42.jar后,程序可以正常连接数据库了。


"D:\project tools\jdk\jdk1.8\bin\java.exe" "-javaagent:D:\project tools\intellij idea 2020\IntelliJ IDEA 2020.1\lib\idea_rt.jar=57802:D:\project tools\intellij idea 2020\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\project tools\jdk\jdk1.8\jre\lib\charsets.jar;D:\project tools\jdk\jdk1.8\jre\lib\deploy.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\access-bridge-64.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\cldrdata.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\dnsns.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\jaccess.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\jfxrt.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\localedata.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\nashorn.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\sunec.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\sunjce_provider.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\sunmscapi.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\sunpkcs11.jar;D:\project tools\jdk\jdk1.8\jre\lib\ext\zipfs.jar;D:\project tools\jdk\jdk1.8\jre\lib\javaws.jar;D:\project tools\jdk\jdk1.8\jre\lib\jce.jar;D:\project tools\jdk\jdk1.8\jre\lib\jfr.jar;D:\project tools\jdk\jdk1.8\jre\lib\jfxswt.jar;D:\project tools\jdk\jdk1.8\jre\lib\jsse.jar;D:\project tools\jdk\jdk1.8\jre\lib\management-agent.jar;D:\project tools\jdk\jdk1.8\jre\lib\plugin.jar;D:\project tools\jdk\jdk1.8\jre\lib\resources.jar;D:\project tools\jdk\jdk1.8\jre\lib\rt.jar;D:\project tools\intellij idea 2020\IntelliJ IDEA 2020.1\workspace\hydrologyHandbook\out\production\hydrologyHandbook;F:\sqljdbc_4.2.8112.200_chs\sqljdbc_4.2\chs\jre8\sqljdbc42.jar" rainstormDivision.rainstormDivision
41107200
41107200
41107200
41107200
41107200
41107200
41107200
........

解决方案:更换低版本的JDBC驱动

提示:直接在官网下载低版本的驱动,sql server jdbc驱动官网:
https://docs.microsoft.com/zh-cn/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver16
点击进入后一般主页只显示最新的驱动下载,目前是Microsoft JDBC Driver 10.2,需要自己前往历史版本界面下载。



点击此处进入历史版本,根据你的需求对相应版本进行下载,在idea的project stucture中导入外部jar即可。
(这个作为解决上述错误的一个可能方法,希望能帮到需要的人)

idea连接sql server报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接相关推荐

  1. JDBC连接SQLServer2012报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。

    目录 一.场景描述: 二.解决方法(实测通过) 三.注意事项 四.测试运行效果 错误信息:The server selected protocol version TLS10 is not accep ...

  2. 问题解决:idea 中无法连接 sql server 数据库,报错 [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    报的错误信息如下: [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接.错误:"PKIX path building failed: sun ...

  3. 连接数据库报com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    JDBC加载驱动,连接SQLServer 2012 报 java.ext.dirs: C:\Program Files\Java\jdk1.8.0_331\jre\lib\ext;C:\Windows ...

  4. [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is

    文章目录 项目场景 问题描述 解决方案 方案一:修改jdk(推荐) 方案二:修改idea 测试连接 项目场景 Idea使用DateSource插件连接SqlServer数据库报错 问题描述 [08S0 ...

  5. JDBC连接数据库遇到的“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。”问题解决方法

    JDBC连接数据库遇到的"驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接."问题解决方法! 时间:2018-12-20 本文章向大家介绍JDB ...

  6. 关于解决驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“sun.security.validator.ValidatorException:

    首先 如果你是在访问一个网站,可以通过可以通过导入证书的方式解决该问题.或者跳过ssl证书验证.这些操作步骤,其他博主已经写的非常详细了.在这里不做赘述. 如果你只是单纯链接一个本地数据库,却莫名其妙 ...

  7. 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 解决方案

    报错信息: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 环境: jdk1.8 解决过程: 经过百度后,进行了以下操作 第一步: 下载两个jar包------- ...

  8. com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立 安全连接。

    @TOcom.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立 安全连接.C co ...

  9. 正确解决驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    关键点: 报错信息 Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL S ...

最新文章

  1. 12.多线程的实现方式、线程安全问题的产生与解决以及生产者与消费者问题
  2. 《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复
  3. Linux C下实现线程池
  4. viewGroup 项目中使用
  5. powertool 使用学习总结
  6. SSAS系列——【08】多维数据(程序展现Cube)
  7. mooc哈尔滨c语言作业答案,哈尔滨工业大学C语言2016年MOOC在线测试答案.doc
  8. 【C语言】第五章 迭代计算与循环结构 题解
  9. java中抽象类与接口的不同之处
  10. Python2.7学习笔记-定义函数、filter/map/reduce/lambda
  11. Java项目:淘淘商城
  12. 产品设计体会(4013)产品路标规划
  13. 排序数据图-R/python
  14. Ubuntu14.04 安装Firefox flash插件
  15. oracle dba培训教程 第九章 创建数据库
  16. Eclipse中配置python环境
  17. Camera ITS测试
  18. ue4 材质始终面向摄像机
  19. python综合程序设计-实验四 Python综合实践
  20. Python的三种删除语句

热门文章

  1. mt6737电池电量计算
  2. 【附源码】Java计算机毕业设计卡通动漫商城系统(程序+LW+部署)
  3. 简单线程实例(铁路售票模拟)
  4. Leetcode Mysql 1709. 访问日期之间最大的空档期(DAY 14)
  5. redis学习笔记(三)--Redis的功能
  6. 高数第十二章 级数12.1 常数项级数
  7. OA系统选型:确定需求,“对症下药”
  8. Network笔记整理 - 网络协议与网络分层
  9. multiselect选中,将multiselect中的一些特定选项设置为禁用和选中
  10. leetcode-77-组合