【发布时间】:2022-10-18 01:22:51
【问题描述】:
我在本地计算机上安装 SQL Server 并将其嵌入到我的 Spring Boot 应用程序中。启动Tomcat后,出现以下错误:
'PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target'. ClientConnectionId:85411829-6853-4fdb-9373-b4c93e1d5e8f
我知道这个错误有据可查。我遵循了许多指南并阅读了很多相关内容,但我发现的所有建议都没有解决我的问题。
我做了什么:
-
从网站下载随机 SSL 证书并将其添加到 Java 目录 (descriped here) 中的 cacert 文件。
-
为 SQL Server 配置 Spring Boot (descriped here)
-
为 SQL Server 配置 SSL 加密 (descriped here)
这些建议都没有解决该错误。我唯一意识到的是,如果我在我的application.properties 中将spring.jpa.hibernate.ddl-auto 设置为none,程序会显示错误消息,但它并没有中止运行。
application.properties 看起来像这样:
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=Car
spring.datasource.username=admin
spring.datasource.password=password123
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
server.port=8443
server.ssl.key-alias=selfsigned_localhost_sslserver
server.ssl.key-password=changeit
server.ssl.key-store=classpath:ssl-server.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS
我的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
在 SQL Server 中,我创建了一个包含表和数据的数据库。
你们中有人对如何解决此错误有进一步的建议吗?
【问题讨论】:
-
为什么要从随机网站下载证书以添加到您的密钥库中?
-
您是否使用 JDBC Driver 10.2 for SQL Server(或更高版本)? 10.2 引入了一项重大更改,默认情况下应用
Encrypt=true,参考:JDBC Driver 10.2 for SQL Server Released。 -
SQL Server 安装有自己的自签名证书,您需要将公钥添加到您的密钥存储中。您可以通过 SQL Server(版本)配置管理器 > SQL Server 网络配置 > 右键单击(您的实例名称)的协议 > 属性 > 证书选项卡找到它。单击“查看”按钮,然后在打开的证书对话框中,单击“详细信息”选项卡和“复制到文件...”按钮以导出其公钥。然后,您可以将该公钥添加到您的密钥库中。
-
@AlwaysLearning:认为这是正确的答案,因为它解决了问题。我真的很感谢你的帮助!!
-
@AlwaysLearning 证书中的查看按钮被禁用,你能帮忙吗?
标签: java sql-server spring-boot ssl pkix