[英]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
的客戶端建立時,這似乎有效。 我啟用了服務之間的相互身份驗證,以便驗證客戶端證書。 當從B
向A
發出請求時,我收到錯誤
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.