Java SSL : how to get client certificate information

标签 java ssl jsse

我有一个支持 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/

相关文章:

java - 从datasnapshot中获取特定值

java - (修正)如何显示输入与数组的匹配?

java - 有人可以解释一下多态性的输出吗?

java - 如何解决 CertPathValidatorException

java - 公共(public) https 网站上的 jsse handshake_failure

java - 将 double 转换为 Int,向下舍入

apache - 在两个不同端口下运行的同一域的 HTTP 到 HTTPS 重定向

c++ - 如何在 OpenSSL 中获取 SSL 证书

java - 使用 SSLEngine (JSSE) 与旧客户端进行 SSL 握手

ubuntu - ubuntu 15.10 和 openjdk-8-jdk 中是否缺少 cacerts 文件?