? ? ? ? ? ? ? ? ? ? ??
其實解決方法很簡單,只需要加上一個字段就行了,只要是關(guān)于套接字連接錯誤的都可以這樣解決,而且不用修改SQL server管理器的配置
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?trustServerCertificate=true;
?trustServerCertificate=true;
在不同的環(huán)境下有不同的加法,具體情況請往下看
說明:我的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: 驅(qū)動程序無法通過使用安全套接字層(SSL)加密與 SQL Server 建立安全連接。錯誤:“SQL Server 未返回響應(yīng)。連接已關(guān)閉。 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使用數(shù)據(jù)源連接數(shù)據(jù)庫時:
08S01] 驅(qū)動程序無法通過使用安全套接字層(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.?
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: 驅(qū)動程序無法通過使用安全套接字層(SSL)加密與 SQL Server 建立安全連接。錯誤:“SQL Server 未返回響應(yīng)。連接已關(guān)閉。 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)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1323)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156)
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1560)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468)
Caused by: java.io.IOException: SQL Server 未返回響應(yīng)。連接已關(guān)閉。 ClientConnectionId:22dc49b0-221d-4a51-9a84-8d507658df6e
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:651)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:708)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:700)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:895)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:883)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1618)
... 10 common frames omitted
2.1
jidbc連接:
String RL="jdbc:sqlserver://localhost:1434;database=數(shù)學(xué)建模;encrypt=true;trustServerCertificate=true"
完整代碼如下:
public static void main(String[] args) {
//使用jbdc進(jìn)行驅(qū)動;
//String RL="jdbc:sqlserver://localhost:1434;"+"DatabaseName=Student_info";
//只需要跳過檢查就行并不用那些又是刪除又是修改的
String RL="jdbc:sqlserver://localhost:1434;database=數(shù)學(xué)建模;encrypt=true;trustServerCertificate=true";
String sqlStr="select *\r\n"
+ "from 顏色\r\n"
;
try {
//加載驅(qū)動包
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("啟動成功");
String userName="eclipse";
String userPwd="wkz123";
//創(chuàng)建數(shù)據(jù)庫連接
Connection dbConn= DriverManager.getConnection(RL,userName,userPwd);
System.out.println("鏈接成功");
//向數(shù)據(jù)庫發(fā)送個東西
Statement stmt=dbConn.createStatement();
ResultSet rs=stmt.executeQuery(sqlStr);//執(zhí)行數(shù)據(jù)庫查詢語句存在于sqlStr中
while(rs.next())
{
//
String str=rs.getString("文物編號")+" "+rs.getNString("紋飾")+
" "+rs.getString("類型")+" "+rs.getString("顏色")+
" "+rs.getString("表面風(fēng)化");
System.out.println(str);
}
dbConn.close();
}catch(Exception e) {
e.printStackTrace(System.out);
}
}
2.2
mybatis連接:
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1434;database=數(shù)學(xué)建模;encrypt=true;trustServerCertificate=true"/>
<property name="username" value="eclipse"/>
<property name="password" value="wkz123"/>
完整代碼:
<environments default="development">
<!--environments 是數(shù)據(jù)庫的環(huán)境,可以是多個環(huán)境·,此時為默認(rèn)的環(huán)境-->
<environment id="development">
<!--這是事務(wù)管理器,類型是jdbc意思是用jdbc的事務(wù)進(jìn)行管理
DBC – 這個配置直接使用了 JDBC 的提交和回滾功能,它依賴從數(shù)據(jù)源獲得的連接來管理事務(wù)作用域
MANAGED – 這個配置幾乎沒做什么。它從不提交或回滾一個連接,而是讓容器來管理事務(wù)的整個生命周期(比如 JEE 應(yīng)用服務(wù)器的上下文)
-->
<transactionManager type="JDBC"/>
<!--
數(shù)據(jù)源使用連接池jdbc自帶的
POOLED– 這種數(shù)據(jù)源的實現(xiàn)利用“池”的概念將 JDBC 連接對象組織起來
UNPOOLED– 這個數(shù)據(jù)源的實現(xiàn)會每次請求時打開和關(guān)閉連接,就是不使用連接池
JNDI 是個連接池的名字,可以在tomcat中使用啦
-->
<dataSource type="POOLED">
<!-- <property name="driver" value="${driver}"/> <!–配置文件在db文件中–>-->
<!-- <property name="url" value="${url}"/>-->
<!-- <property name="username" value="${username}"/>-->
<!-- <property name="password" value="${password}"/>-->
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1434;database=數(shù)學(xué)建模;encrypt=true;trustServerCertificate=true"/>
<property name="username" value="eclipse"/>
<property name="password" value="wkz123"/>
</dataSource>
</environment>
</environments>
2.3
spring boot+druid+mybatis plus連接:
spring.datasource.url=jdbc:sqlserver://localhost:1434;database=server;encrypt=true;trustServerCertificate=true
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost:1434;database=server;encrypt=true;trustServerCertificate=true
spring.datasource.username=eclipse
spring.datasource.password=wkz123
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
server.port=8088
2.4
在idea中測試鏈接數(shù)據(jù)庫:
報錯信息:
08S01] 驅(qū)動程序無法通過使用安全套接字層(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.?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-504082.html
08S01] 驅(qū)動程序無法通過使用安全套接字層(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,如下圖所示:
文章來源:http://www.zghlxwxcb.cn/news/detail-504082.html
?
到了這里,關(guān)于驅(qū)動程序無法通過使用安全套接字層(SSL)加密與 SQL Server 建立安全連接。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!