繁体   English   中英

同一台机器上具有相同证书的两个服务之间的相互认证

[英]Mutual authentication between two services with same certificate on the same machine

我有一个简单的 spring 引导服务( service A ),它暴露了一些 REST API。 为了添加 https 支持,我使用了颁发给同一框中的另一个服务( service B )的相同证书。 这是我的 application.properties 文件

server.ssl.enabled=true
server.ssl.client-auth=need
server.ssl.key-store=keystore.jks
server.ssl.key-store-password=password
server.ssl.key-store-type=JKS
server.ssl.trust-store-password=password
server.ssl.trust-store=keystore.jks
server.ssl.trust-store-type=JKS

当与service A的连接是从不是service B的客户端建立时,这似乎有效。 我启用了服务之间的相互身份验证,以便验证客户端证书。 当从BA发出请求时,我收到错误

javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
        at sun.security.ssl.Alert.createSSLException(Alert.java:131)
        at sun.security.ssl.Alert.createSSLException(Alert.java:117)

启用 ssl 调试后,我发现此错误是导致此问题的原因

upcoming handshake states: server finished[20]
*** Certificate chain
<Empty>
***
https-jsse-nio-8090-exec-4, fatal error: 42: null cert chain

我检查并重新检查密钥库和信任库是否设置正确,但没有运气。 有没有办法可以让具有相同证书的服务器和客户端一起工作? 感谢我如何使它工作(使用相同的证书)的任何指示,因为我已经为此苦苦挣扎了一周。

您的 JKS 是否包含整个链条? 如果你往里看,你有没有一直到根证书的整个链条?

错误告诉你它找不到链。 您的证书可能是自签名的? 或者你的 JKS 没有完整的链条。

查看类似的 Stackoverflow 问题: CamelJettyWebSocketServer, fatal error: 42: null 证书链

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM