早上好。
我的问题是,我想创建一个 HttpsURLConnection
接受默认的受信任证书,但也接受我的自签名证书。
在互联网上环顾四周后,我发现了很多类似的问题,但并不是我想要的。
特别是,一个好的代码是here .
这几乎是我想要的,但有所不同:
他们只会信任自签名证书,我也想信任自签名证书。
基本上我不想从一个空的KeyStore
开始,我想获得默认 keystore ,无论它在哪里/在哪里,它已经包含我的操作系统中的默认证书。
PS:我在安卓上工作。
谢谢大家
最佳答案
您基本上想要使用默认的受信任证书以及您自己的受信任证书。此处提供了类似的问题和答案:Registering multiple keystores in JVM
我也遇到了同样的问题,找到了Code a Ray的答案真的很有用。在将他的代码 fragment 用于多个项目后,我用它创建了一个库。你可以在这里找到它:sslcontext-kickstart
对于您的用例,将您的证书包装在信任库文件中的以下狙击程序应该可以解决问题:
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());
关于java - 如何将自签名证书添加到 HttpsURLConnection 中的默认证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63723029/