簡體   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