当前位置:   article > 正文

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

com.microsoft.sqlserver.jdbc.tdschannel enablessl

                      

其实解决方法很简单,只需要加上一个字段就行了,只要是关于套接字连接错误的都可以这样解决,而且不用修改SQL server管理器的配置

                                     trustServerCertificate=true;

 trustServerCertificate=true;

在不同的环境下有不同的加法,具体情况请往下看

说明:我的1433端口被占用了,所以使用的是1434端口

1.1

先看报错信息:ERROR c.a.d.p.DruidDataSource - create connection SQLException, url: jdbc:sqlserver://localhost;DatabaseName=PT_STORE_HLW, errorCode 0, state 08S01

com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“SQL Server 未返回响应。连接已关闭。 ClientConnectionId:22dc49b0-221d-4a51-9a84-8d507658df6e”。
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1668)

下面这一段是在测试idea使用数据源连接数据库时

08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:64509506-0bbe-41b4-87e7-3c9ce5085eed sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. 

  1. ERROR c.a.d.p.DruidDataSource - create connection SQLException, url: jdbc:sqlserver://localhost;DatabaseName=PT_STORE_HLW, errorCode 0, state 08S01
  2. com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“SQL Server 未返回响应。连接已关闭。 ClientConnectionId:22dc49b0-221d-4a51-9a84-8d507658df6e”。
  3. at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
  4. at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1668)
  5. at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1323)
  6. at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
  7. at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
  8. at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
  9. at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156)
  10. at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218)
  11. at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150)
  12. at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1560)
  13. at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623)
  14. at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468)
  15. Caused by: java.io.IOException: SQL Server 未返回响应。连接已关闭。 ClientConnectionId:22dc49b0-221d-4a51-9a84-8d507658df6e
  16. at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:651)
  17. at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:708)
  18. at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:700)
  19. at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:895)
  20. at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:883)
  21. at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
  22. at sun.security.ssl.InputRecord.read(InputRecord.java:503)
  23. at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
  24. at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
  25. at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
  26. at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
  27. at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1618)
  28. ... 10 common frames omitted

2.1

jidbc连接:

   String RL="jdbc:sqlserver://localhost:1434;database=数学建模;encrypt=true;trustServerCertificate=true"

完整代码如下:

  1. public static void main(String[] args) {
  2. //使用jbdc进行驱动;
  3. //String RL="jdbc:sqlserver://localhost:1434;"+"DatabaseName=Student_info";
  4. //只需要跳过检查就行并不用那些又是删除又是修改的
  5. String RL="jdbc:sqlserver://localhost:1434;database=数学建模;encrypt=true;trustServerCertificate=true";
  6. String sqlStr="select *\r\n"
  7. + "from 颜色\r\n"
  8. ;
  9. try {
  10. //加载驱动包
  11. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  12. System.out.println("启动成功");
  13. String userName="eclipse";
  14. String userPwd="wkz123";
  15. //创建数据库连接
  16. Connection dbConn= DriverManager.getConnection(RL,userName,userPwd);
  17. System.out.println("链接成功");
  18. //向数据库发送个东西
  19. Statement stmt=dbConn.createStatement();
  20. ResultSet rs=stmt.executeQuery(sqlStr);//执行数据库查询语句存在于sqlStr中
  21. while(rs.next())
  22. {
  23. //
  24. String str=rs.getString("文物编号")+" "+rs.getNString("纹饰")+
  25. " "+rs.getString("类型")+" "+rs.getString("颜色")+
  26. " "+rs.getString("表面风化");
  27. System.out.println(str);
  28. }
  29. dbConn.close();
  30. }catch(Exception e) {
  31. e.printStackTrace(System.out);
  32. }
  33. }

2.2

mybatis连接:

  1. <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
  2. <property name="url" value="jdbc:sqlserver://localhost:1434;database=数学建模;encrypt=true;trustServerCertificate=true"/>
  3. <property name="username" value="eclipse"/>
  4. <property name="password" value="wkz123"/>

完整代码:

  1. <environments default="development">
  2. <!--environments 是数据库的环境,可以是多个环境·,此时为默认的环境-->
  3. <environment id="development">
  4. <!--这是事务管理器,类型是jdbc意思是用jdbc的事务进行管理
  5. DBC – 这个配置直接使用了 JDBC 的提交和回滚功能,它依赖从数据源获得的连接来管理事务作用域
  6. MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)
  7. -->
  8. <transactionManager type="JDBC"/>
  9. <!--
  10. 数据源使用连接池jdbc自带的
  11. POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来
  12. UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接,就是不使用连接池
  13. JNDI 是个连接池的名字,可以在tomcat中使用啦
  14. -->
  15. <dataSource type="POOLED">
  16. <!-- <property name="driver" value="${driver}"/> &lt;!&ndash;配置文件在db文件中&ndash;&gt;-->
  17. <!-- <property name="url" value="${url}"/>-->
  18. <!-- <property name="username" value="${username}"/>-->
  19. <!-- <property name="password" value="${password}"/>-->
  20. <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
  21. <property name="url" value="jdbc:sqlserver://localhost:1434;database=数学建模;encrypt=true;trustServerCertificate=true"/>
  22. <property name="username" value="eclipse"/>
  23. <property name="password" value="wkz123"/>
  24. </dataSource>
  25. </environment>
  26. </environments>

2.3

spring boot+druid+mybatis plus连接:

  1. spring.datasource.url=jdbc:sqlserver://localhost:1434;database=server;encrypt=true;trustServerCertificate=true
  2. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  3. spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
  4. spring.datasource.url=jdbc:sqlserver://localhost:1434;database=server;encrypt=true;trustServerCertificate=true
  5. spring.datasource.username=eclipse
  6. spring.datasource.password=wkz123
  7. mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  8. server.port=8088

2.4

在idea中测试链接数据库:

报错信息:

08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:64509506-0bbe-41b4-87e7-3c9ce5085eed sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. 

 

08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:64509506-0bbe-41b4-87e7-3c9ce5085eed sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. 

解决方法:

trustServerCertificate改为true,如下图所示:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/141541
推荐阅读
相关标签
  

闽ICP备14008679号