我看到了this question(和其他人),其中解释了如何使用命令行手动将(自签名)证书添加到密钥库/ cacerts。执行此操作时,如果您获得了证书(.cert文件),则可以与没有签名证书的服务器建立安全连接。这对于测试目的非常有用。
我想对此进行编程,因此用户无需手动执行此操作。基本概念如下:用户拥有.cert文件的本地副本,并为我的程序提供该文件驻留在其文件系统中的路径。我的程序获取文件并将其添加到密钥库。
我的问题是:如何将此证书添加到我的程序中的密钥库中,以便turstmanager将其作为可信/签名证书接受,给定.cert文件的(路径)?是否有关于此问题的任何教程或代码片段?
PS:我不需要像here所述的“接受所有证书”信任管理员技巧
答案 0 :(得分:6)
相当简单:
InputStream input = ...;
CertificateFactory factory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) factory.generateCertificate(input);
KeyStore keystore = ...;
keystore.setCertificateEntry(alias, cert);
从javadoc:http://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html
可以看出,加载和存储密钥库是很明显的