以编程方式将自签名证书添加到密钥库/信任库

use*_*155 4 java ssl keystore

我看到了这个问题(以及其他问题),其中解释了如何使用命令行手动将(自签名)证书添加到密钥库/ cacerts.执行此操作时,如果您获得了证书(.cert文件),则可以与没有签名证书的服务器建立安全连接.这对于测试目的非常有用.

我想对此进行编程,因此用户无需手动执行此操作.基本概念如下:用户拥有.cert文件的本地副本,并为我的程序提供该文件驻留在其文件系统中的路径.我的程序获取文件并将其添加到密钥库.

我的问题是:如何将此证书添加到我的程序中的密钥库中,以便turstmanager将其作为可信/签名证书接受,给定.cert文件的(路径)?是否有关于此问题的任何教程或代码片段?

PS:我不需要这里描述的"接受所有证书"信任管理员技巧

nab*_*lex 6

相当简单:

InputStream input = ...;
CertificateFactory factory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) factory.generateCertificate(input);
KeyStore keystore = ...;
keystore.setCertificateEntry(alias, cert);
Run Code Online (Sandbox Code Playgroud)

从javadoc可以看出加载和存储密钥库:http://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html