我的应用程序连接到 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();
};
Run Code Online (Sandbox Code Playgroud)
有没有办法调整这种方法以返回TrustManager信任我拥有的证书的签名机构的a ?此外,如何从我拥有的证书中提取有关证书签署者的信息?
谢谢,丹。