【发布时间】:2014-12-25 02:09:13
【问题描述】:
我的应用程序连接到 SSL Web 服务,该服务使用证书来验证其身份。最近,这个证书发生了变化,因为它不是由受信任的机构签名的,所以我的部分应用程序失败了。该服务对未来防止这种情况的建议是,我应该开始信任现有证书的签名机构,而不是单个证书。
如何在 Java 中实现这一点?
目前我正在使用 keytool 将他们提供的证书添加到密钥库中,并将其组合到 TrustManagerFactory 中,例如:
public static TrustManager[] getTrustManagers() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException {
KeyStore tks = KeyStore.getInstance(KeyStore.getDefaultType());
tks.load(StarTrustManagerFactory.class.getResourceAsStream("webservice.ks"), "password".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(tks);
return tmf.getTrustManagers();
};
有没有办法调整这种方法来返回一个信任我所拥有证书的签名机构的TrustManager?另外,如何从我拥有的证书中提取有关证书签名者的信息?
谢谢,丹。
【问题讨论】:
-
参见javarevisited.blogspot.de/2012/09/… - 您信任信任库中包含的任何证书。
标签: java ssl certificate certificate-authority