我正在实施使用自签名证书的服务器。将证书分发给客户端的最佳方式是什么?我可以将证书导入java密钥库并设置客户端。但有什么办法可以避免每个客户端手动导入证书。这可以由java客户端自动完成吗?我通过JSSE参考,但无法弄清楚如何做到这一点。将不胜感激任何帮助。Java客户端如何自动接受来自服务器的自签名证书
Regards, Sampath。
我正在实施使用自签名证书的服务器。将证书分发给客户端的最佳方式是什么?我可以将证书导入java密钥库并设置客户端。但有什么办法可以避免每个客户端手动导入证书。这可以由java客户端自动完成吗?我通过JSSE参考,但无法弄清楚如何做到这一点。将不胜感激任何帮助。Java客户端如何自动接受来自服务器的自签名证书
Regards, Sampath。
查看KeyStore
类。它允许您操作Java密钥库。
代码示例:
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(null, null); // Creates a new keystore
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("cert.cer")); // Or read from URL
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate cert = null;
if (bis.available() > 0) {
cert = cf.generateCertificate(bis);
ks.setCertificateEntry("SGCert", cert);
}
ks.setCertificateEntry("SGCert", cert);
ks.store(new FileOutputStream("out.keystore"), "secret".toCharArray());
感谢您的示例。 cert.cer从哪里来。它是否必须从服务器下载? – 2012-02-28 13:59:10
我的部分格式不正确:您可以滚动到右侧以查看代码注释,其中说:'//或从URL读取'您可以使用URL而不是文件名从中读取证书。另一种方法是将证书包含在客户端安装程序中。 – nfechner 2012-02-28 14:13:22
我的不好。应该充分阅读。让我试试这种方法。再次感谢。 – 2012-02-28 15:11:02
看到这个苏答案:http://stackoverflow.com/questions/2893819/telling-java-to-accept-self-signed-ssl-certificate 问候 – Sorin 2012-02-28 11:09:03
@索林避免接受这个问题的答案。相反,应该使用这个答案中的方法:http://stackoverflow.com/a/859271/372643 – Bruno 2012-02-28 13:23:34
我在发布之前看过了。在那里提到使用keytool导入证书。这是否意味着用户需要在机器上手动下载证书。我正在寻找一种可以自动完成交换的方式。 – 2012-02-28 13:58:27