java - 两个应用程序使用相同的 keystore 时,SSL握手异常

标签 java ssl spring-boot https keystore

我有2个应该互相请求的springboot应用程序。它们通过https工作,我按照here所述为两者创建了相同的密钥库。但是当第一个发送请求到第二个时,我得到下一个错误:

Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking https://service: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


ssl属性是

server.port = 5000
security.require-ssl=true
server.ssl.key-store-type:PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=secret
server.ssl.key-alias=alias


我也认为应该提到-证书是自签名的。

我错过了什么或做错了什么?

最佳答案

这没有道理。两端的身份不相同,因此它们的证书不应该相同,并且它们的私钥也不应该真正相同。否则,它们不是私有的。

你需要:


两个密钥对
两张证书
两个密钥库
两个信任库


在每种情况下,必须导出每个密钥库中的证书,然后将其导入到对等方的信任库中。

关于java - 两个应用程序使用相同的 keystore 时,SSL握手异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47891133/

相关文章:

java - 我们可以修改或自定义 Java 对象的数据结构(例如树、链表等)吗?

windows - 相互认证的证书使用了错误的客户端证书,如何重置?

php - 如何在 Android 上使用 SSL 与多实体

Azure 应用程序网关 + Web 应用程序 = SSLLABS A+?

java - Spring Boot - html 文件的正确位置

spring-boot - 在多 Pod Spring 应用程序中获取请求/秒

spring - Sprint 引导错误无法获取条目 BOOT-INF/lib/lucene-analyzers-common-7.1.0.jar 的嵌套存档

java - 当参数数量本质上是动态时如何执行加法

java - Mockito 更改非 void 方法的参数值

java - 如何在java中的Graphics2D对象上创建事件