繁体   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