如何读取 java 中的用户证书

How to read user's certificate in java

有没有办法读取安装在客户端浏览器中的可信证书?我想阅读 issued to 和 issued by 等信息。我正在使用 Java 到 运行 web-sphere 门户,使用 web-sphere 到 运行 应用程序。

我写了下面的读取证书的代码。当代码执行时,我得到空值。

public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

String cyphersuite = (String) req.getAttribute("javax.servlet.request.cipher_suite");        
        if (cyphersuite != null) {
            X509Certificate[] x509=(X509Certificate[])req.getAttribute("javax.servlet.request.X509Certificate");
            System.out.println("x509   "+x509);         
        }
}

你不能。在编写服务器代码并检查请求对象时,您会阅读客户端选择发送的信息。浏览器永远不会将任意证书信息发送回它们正在连接的服务器。如果浏览器要发送此类信息,服务器可以执行诸如识别用户访问过的其他站点之类的操作。这会侵犯隐私。

此外,如果客户端尝试连接到您的服务器但无法验证证书,它将永远不会创建与您的应用程序的连接。您上面的代码执行的唯一方法是用户已经信任该证书。那时没有理由进行任何类型的检查。