24
A
回答
31
在Example Depot中有一个示例,显示如何获取一组根证书并遍历它们,名为Listing the Most-Trusted Certificate Authorities (CA) in a Key Store。这是一个稍作修改的版本,可打印出每个证书(在Windows Vista上测试)。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.PKIXParameters;
import java.security.cert.TrustAnchor;
import java.security.cert.X509Certificate;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
try {
// Load the JDK's cacerts keystore file
String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar);
FileInputStream is = new FileInputStream(filename);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "changeit";
keystore.load(is, password.toCharArray());
// This class retrieves the most-trusted CAs from the keystore
PKIXParameters params = new PKIXParameters(keystore);
// Get the set of trust anchors, which contain the most-trusted CA certificates
Iterator it = params.getTrustAnchors().iterator();
while(it.hasNext()) {
TrustAnchor ta = (TrustAnchor)it.next();
// Get certificate
X509Certificate cert = ta.getTrustedCert();
System.out.println(cert);
}
} catch (CertificateException e) {
} catch (KeyStoreException e) {
} catch (NoSuchAlgorithmException e) {
} catch (InvalidAlgorithmParameterException e) {
} catch (IOException e) {
}
}
}
3
这应该使用系统默认的信任存储来获取所有证书更灵活:
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
List<Certificate> x509Certificates = new ArrayList<>();
trustManagerFactory.init((KeyStore)null);
Arrays.asList(trustManagerFactory.getTrustManagers()).stream().forEach(t -> {
x509Certificates.addAll(Arrays.asList(((X509TrustManager)t).getAcceptedIssuers()));
});
```
+0
需要Android N – estoke 2017-03-08 15:15:42
相关问题
- 1. 在PhantomJS中安装受信任的根证书
- 2. GeoTrust是Android => 2.3中的受信任根证书之一吗?
- 3. SSL证书和cURL:证书包或不受信任的证书?
- 4. 浏览器列表及其默认受信任的根证书颁发机构
- 5. 通SSL层受信任的证书
- 6. 受信任的证书无效
- 7. ClickOnce受信任的根证书颁发机构
- 8. 将证书添加到受信任的根机构
- 9. 获取HTMLUnitDriver绕过不受信任的证书验证(Selenium 2.0)
- 10. 如何在IE中自动安装自签名证书受信任的根证书颁发机构商店
- 11. 是否有可能让Java忽略“信任存储”并接受它获得的任何SSL证书?
- 12. 如何将证书添加到根受信任的证书,但没有警报窗口,在C#
- 13. ADFS错误:证书链的根不是受信任的根证书颁发机构
- 14. Chrome不信任提琴手根证书
- 15. Tomcat服务器信任库根证书
- 16. 如何获得脑卒中卡认证和证书信息
- 17. Selenium2配置文件接受不受信任的证书
- 18. 受信任的证书条目不受密码保护Spring SAML
- 19. 信任库中信任哪些证书?
- 20. 如何信任Java中的证书颁发机构?
- 21. 获取iOS中包含的受信任根证书的PEM文件(用于验证gRPC)
- 22. 如何告诉C#SslStream AuthenticateAsServer发送证书信任列表(CTL)
- 23. 如何信任的Android SSL PKCS12证书
- 24. 如何获得由证书
- 25. 受信任的根CA应该是证书链的一部分吗?
- 26. 如何在java信任库中导入jks证书
- 27. 如何将证书部署到Azure的受信任的人员存储中?
- 28. 如何从XMLSignature获得证书链(根和中间体)
- 29. 信任所有证书? X509证书
- 30. 信任的SSL证书
好吧,我会尝试了这一点。 (时间流逝) 它工作。你知道,令人遗憾的是,默认keystore的密码确实是'changeit'。 谢谢。 – 2010-08-18 03:25:21
你知道默认密钥库更好的密码吗? – 2010-08-18 03:56:12
有没有办法改变默认密码? – 2011-05-13 17:14:17