解决SpringBoot连接SqlServer出现的问题

 更新时间:2024年10月09日 11:25:33   作者:Anzzm7  
在尝试通过SSL与SQL Server建立安全连接时,如果遇到“PKIX path building failed”错误,可能是因为未能正确配置或信任服务器证书,当"Encrypt"属性设置为"true"且"trustServerCertificate"属性设置为"false"时,要求驱动程序使用安全套接字层(SSL)加密与SQL Server建立连接

SpringBoot连接SqlServer出现问题

“Encrypt”属性设置为“true”且 “trustServerCertificate”属性设置为“false”

但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接:

错误:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target。

通过yml配置时出现了上方的问题

spring:
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    username: sa
    password: 123456
    url: jdbc:sqlserver://localhost:1433;databaseName=xxx;

这时候注意你的sql语句不能写错了,不然也会报错

在数据库名后面 ;trustServerCertificate=true 加上这个就可以了

Java连接SqlServer报服务端仅支持TLS10

报错

Invocation of init method failed; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]

通过查阅网上资料大部分说原因是Java认为TLSv1不太安全所以在java.security中通过jdk.tls.disabledAlgorithms配置禁用了TLSv1, TLSv1.1,导致Java应用作为SQLServer客户端连接服务时使用的TLS13, TLS12协议,但是SQLServer服务端可能版本比较老或者配置了仅支持TLS10导致报上述错误

原因是最近更新了jdk8的小版本导致Java的安全文件变更了

处理方式

修改基础镜像中的/usr/java/latest/jre/lib/security/java.security文件内容,替换成之前的内容

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • redis setIfAbsent和setnx的区别与使用说明

    redis setIfAbsent和setnx的区别与使用说明

    这篇文章主要介绍了redis setIfAbsent和setnx的区别与使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot发现最新版Druid重大问题(坑)

    SpringBoot发现最新版Druid重大问题(坑)

    这篇文章主要介绍了SpringBoot发现最新版Druid重大问题(坑),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • java中String的常见用法总结

    java中String的常见用法总结

    以下是关于string的七种用法,注意哦,记得要时常去查看java的API文档,那个里面也有很详细的介绍
    2013-10-10
  • SpringBoot最新定时任务的7种实现方案

    SpringBoot最新定时任务的7种实现方案

    在现代应用中,定时任务是一个非常常见的需求,本文将通过7种方式讲解如何在SpringBoot中实现定时任务,包括使用@Scheduled注解、ScheduledExecutorService、Quartz、SpringTaskScheduler、Redis、XXL-JOB和Elastic-Job等,各有优缺点,选择时应根据实际需求进行考虑
    2024-12-12
  • spring中jdbcTemplate.batchUpdate的几种使用情况

    spring中jdbcTemplate.batchUpdate的几种使用情况

    本文主要介绍了spring中jdbcTemplate.batchUpdate的几种使用情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • springboot中RestTemplate配置HttpClient连接池详解

    springboot中RestTemplate配置HttpClient连接池详解

    这篇文章主要介绍了springboot中RestTemplate配置HttpClient连接池详解,这些Http连接工具,使用起来都比较复杂,如果项目中使用的是Spring框架,可以使用Spring自带的RestTemplate来进行Http连接请求,需要的朋友可以参考下
    2023-11-11
  • Java中求最大值的4种方法实例代码

    Java中求最大值的4种方法实例代码

    这篇文章主要给大家介绍了关于Java中求最大值的4种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • SpringBoot AOP Redis实现延时双删功能实战

    SpringBoot AOP Redis实现延时双删功能实战

    本文主要介绍了SpringBoot AOP Redis实现延时双删功能实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • JAVA像SQL一样对List对象集合进行排序

    JAVA像SQL一样对List对象集合进行排序

    这篇文章主要介绍了JAVA像SQL一样对List对象集合进行排序的实现方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Java面试之限流的实现方式小结

    Java面试之限流的实现方式小结

    限流是指在各种应用场景中,通过技术和策略手段对数据流量、请求频率或资源消耗进行有计划的限制,本文为大家整理了常见的限流的实现方式,有需要的可以参考下
    2024-02-02

最新评论