Java SSLSocket 查找客户端是否发送了证书

问题描述 投票:0回答:1

我的应用程序允许经过身份验证和未经身份验证的 TLS 连接,并且在代码中,我需要区分它们(就像在经过身份验证和未经身份验证的 HTTPS 会话中一样)。 有没有办法查明 Java SSLSocket 连接(在服务器上)是否是从具有客户端证书的客户端建立的?如果是这样,我可以看到客户端证书的 CN= 吗?

java ssl ssl-certificate client-certificates jsse
1个回答
0
投票

评论中所述,

try {
    Certificate[] certs = socket.getSession().getPeerCertificates();
    // we get here if the client *was* authenticated
} catch (SSLPeerUnverifiedException e) {
    // we get here if the client *was not* authenticated
}

似乎正是您所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.