我正在编写一个服务器,它可以选择(取决于客户端)需要一个客户端证书。提供证书的客户端和不提供证书的客户端需要通过相同的服务器端口连接到服务器。
为了在 SSLContext 上支持这两种类型的客户端,我将调用“setWantClientAuth(true)”。在协商客户端 SSLSession 后,我想获取客户端证书链(如果可用)。我看到获取客户端证书链的唯一方法是通过“sslSession.getPeerCertificates()”,如果客户端没有提供证书,不幸的是会抛出异常。
有没有其他方法可以确定在调用 getPeerCertificates 之前是否提供了客户端证书,这样我就可以避免不提供证书的客户端的异常?