我的应用程序连接到 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
信任我拥有的证书的签名机构?此外,如何从我拥有的证书中提取有关证书签名者的信息?
谢谢,丹。