0

我正在尝试使用 ssl 调用网络服务。我如何获得相关的服务器证书,以便我可以将其导入我的信任库?我知道从 main 方法使用属性 com.ibm.ssl.enableSignerExchangePrompt 但我会手动将服务器证书添加到我的信任库中。

我不想在我的任何 servlet 中设置此属性

非常感谢任何帮助谢谢 Damien

4

2 回答 2

2

您可以通过实现自己的 X509TrustManager 以编程方式使用 Java 执行此操作。


public class dummyTrustManager implements X509TrustManager {

        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            //do nothing
        }

        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            // do nothing
        }

        public X509Certificate[] getAcceptedIssuers() {
            //just return an empty issuer
            return new X509Certificate[0];
        }
    }

然后你可以使用这个信任管理器来创建一个 SSL 套接字


SSLContext context = SSLContext.getInstance("SSL");
context.init(null, new TrustManager[] { new dummyTrustManager() },
                            new java.security.SecureRandom());

SSLSocketFactory factory = context.getSocketFactory();
InetAddress addr = InetAddress.getByName(host_);
SSLSocket sock =  (SSLSocket)factory.createSocket(addr, port_);

然后使用该套接字,您可以提取服务器证书(将其导入受信任的密钥库)


SSLSession session = sock.getSession();
Certificate[] certchain = session.getPeerCertificates();
于 2008-09-28T19:39:41.750 回答
0

如果您在 Web 浏览器中浏览到该站点,您可以通过点击小挂锁图标来查看安全信息,然后在弹出的对话框中您可以保存证书。

Chrome 的步骤

  1. 单击挂锁(在地址栏中)
  2. 点击“证书信息”
  3. 在“详细信息”选项卡下,您可以选择“复制到文件...”。
于 2008-09-28T18:35:54.570 回答