【发布时间】:2013-01-10 18:48:59
【问题描述】:
我有一个客户端/服务器进程,其中一台服务器和一台客户端。
连接设置如下:
System.setProperty("javax.net.ssl.trustStore", "path/to/store");
System.setProperty("javax.net.ssl.trustStorePassword", "passwd");
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
sslsocket = (SSLSocket) sslsocketfactory.createSocket(InetAddress.getLocalHost(), port);
1:1,这很好用。现在我正在扩展它,以便服务器正在侦听多个客户端的多个端口。每个连接到服务器的客户端都应该在具有特定信任库的特定端口上执行此操作。
如果我在服务器端注册了两个信任库,当我尝试建立客户端连接时,我会收到错误:
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown Received fatal alert: certificate_unknown
我一直在查看stack overflow 的示例,但一切似乎都过于复杂。有没有一种简单的方法来管理这个?还是一个进程不应使用多个密钥存储的令人信服的理由?
【问题讨论】:
-
为什么?证书要么受信任,要么不受信任。ports 与它无关。听起来好像您正在尝试使用身份验证作为强制授权的一种手段,不同的端口具有不同的授权要求。这不是 PKI 身份验证的用途。
-
你说得对,我希望每个客户端都能够使用不同的密钥库和密码进行连接,以使两个客户端尽可能分开。也许某种授权设置会更合适
标签: java ssl client-server keystore