我有一个支持 SSL 的 tcp 服务器,可以监听多个 rsyslog 客户端。每个客户端都有自己的证书,该证书被添加到服务器的信任库中。此设置工作正常。 T问题是在socket accept connection后,是否有办法获取客户端证书信息,如CN,location等?
下面是简单的tcp服务器的代码示例。
SSLServerSocketFactory sf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
ServerSocket ss = sf.createServerSocket(514);
while(true){
SSLSocket s = (SSL)ss.accept();
// here I need to get client certificate information
}
最佳答案
您需要将 SSLServerSocket
配置为需要或想要客户端身份验证,具体取决于哪一个适用。然后,您可以从 SSLSocket 的 SSLSession
中获取对等证书(如果已发送)。
关于Java SSL : how to get client certificate information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365697/