一、环境描述:
Linux服务器一台,本地 windows系统、jdk1.8、微服务代码部署本地。sqlServer数据库部署另一台windows服务器。
微服务连接sql数据库相关配置如下:
pom.xml
<!-- sql server-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
.yml文件
spring:
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:jtds:sqlserver://服务器ip:1433;databaseName=dbname
username: name
password: pwd
二、问题描述:
启动本地微服务,调用数据库查询语句-查询成功,
将本地服务打成jar包,放在Linux服务器-启动jar包,调用数据库查询语句-查询异常,异常如下:
2021-03-17 10:01:52.030 [ http-nio-6882-exec-5 ] - [ ERROR ] [ com.zaxxer.hikari.pool.HikariPool : 587 ] - HikariPool-1 - Exception during pool initialization.
com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
错误:“java.security.cert.CertificateException: Certificates do not conform to algorithm constraints”。 ClientConnectionId:15002bc9-e4f0-424f-a707-d219e2282d51
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.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
经过百度全是提示修改 jdk 的 安全过滤配置解决问题,按照步骤解决无效,表明问题原因可能不一样,终经过反复推敲,发现是数据源驱动问题,其实提示也挺明显的。
三、解决办法
将微服务连接sql数据库相关配置如下更改:
pom.xml
<!-- sql server-->
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
.yml文件
spring:
datasource:
driver-class-name: net.sourceforge.jtds.jdbc.Driver
url: jdbc:jtds:sqlserver://服务器ip:1433;databaseName=dbname;instance=SQLServer2012;
username: name
password: pwd
hikari:
connection-test-query: SELECT 1
再次打包到Linux环境访问成功。(历经5小时解决也记录一下)