如何在HttpsURLConnection中将自签名证书添加到默认证书中



早上好。

我的问题是,我想创建一个HttpsURLConnection,它接受默认的可信证书,但也接受我的自签名证书。

在网上浏览后,我发现了很多类似的问题,但并不是我想要的。

特别是,这里有一个好的代码。

这正是我想要的,但有一点不同:他们只信任自签名证书,我也要信任自签名的证书。

基本上,我不想从一个空的KeyStore开始,我想获得默认的密钥库,无论它在哪里,都是在我的操作系统中已经包含默认证书的东西。

附言:我在安卓系统工作。

感谢大家

您基本上想要使用默认的可信证书以及您自己的可信证书。这里提供了类似的问题和答案:在JVM 中注册多个密钥库

我也遇到了同样的问题,发现Code a Ray的答案真的很有用。在将他的代码片段用于多个项目后,我用它创建了一个库

对于您的用例,以下将证书封装在信任库文件中的剪切器应该可以做到这一点:

SSLFactory sslFactory = SSLFactory.builder()
.withDefaultTrustMaterial()
.withTrustMaterial("my-truststore.jks", "password".toCharArray())
.build();
HttpsURLConnection httpsURLConnection = (HttpURLConnection) new URL(url).openConnection();
httpsURLConnection.setHostnameVerifier(sslFactory.getHostnameVerifier());
httpsURLConnection.setSSLSocketFactory(sslFactory.getSslContext().getSocketFactory());

最新更新