簡體   English   中英

Java安全客戶端套接字認證

[英]java secure client socket authentication

對於安全的服務器套接字,以便發送服務器證書,我要做的只是使用已使用密鑰庫初始化的KeyManagerFactory.getKeyManagers()初始化SSLContext
但是如何在客戶端執行此操作?
即我為客戶做的:

System.setProperty("javax.net.ssl.keyStore", "clientKeystore.keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "secret");
System.setProperty("javax.net.ssl.trustStore", "clientKeystore.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "secret");
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket("localhost", 7890);

我使用與信任庫相同的密鑰庫。 我認為只為了查看JSSE就可以了。
問題是我進入了服務器部分(在setNeedClientAuth中將setNeedClientAuth設置為true)。

Exception in thread "main" javax.net.ssl.SSLHandshakeException: null cert chain

那么我應該如何配置客戶端以發送證書?系統屬性不是正確的方法嗎?
因為我看不到如何在客戶端使用SSLContext。

謝謝!

您不必在客戶端上設置特定的配置即可使用證書進行身份驗證。 密鑰庫中可能缺少一些中間的CA,並且客戶端無法從服務器發送的信任錨中構建證書路徑,因此無法確定證書是否適合身份驗證。

您可以將系統屬性javax.net.debug添加到all以在標准輸出上打印調試流。 也許您可以獲得有關該錯誤的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM