早上好。我的问题是,我想创造一个 HttpsURLConnection 它接受默认的可信证书,但也接受我的自签名证书。我在网上查了一下,发现了很多类似的问题,但不完全是我想要的。特别是,这里有一个很好的代码。这正是我想要的,但有一点不同:他们将只信任自签名证书,我也希望信任自签名证书。基本上我不想从一个空的开始 KeyStore ,我想得到默认的密钥库,不管它在哪里,它已经包含了我的操作系统中的默认证书。附言:我在安卓工作。谢谢大家
HttpsURLConnection
KeyStore
xam8gpfp1#
您基本上希望使用默认的可信证书以及您自己的可信证书。这里也提供了类似的问题和答案:在jvm中注册多个密钥库我也遇到了同样的问题,发现代码a的答案非常有用。在将他的代码片段用于多个项目之后,我用它创建了一个库。您可以在这里找到:sslcontext kickstart对于您的用例,以下snipper和您的证书 Package 在信任库文件中,应该可以做到这一点:
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());
1条答案
按热度按时间xam8gpfp1#
您基本上希望使用默认的可信证书以及您自己的可信证书。这里也提供了类似的问题和答案:在jvm中注册多个密钥库
我也遇到了同样的问题,发现代码a的答案非常有用。在将他的代码片段用于多个项目之后,我用它创建了一个库。您可以在这里找到:sslcontext kickstart
对于您的用例,以下snipper和您的证书 Package 在信任库文件中,应该可以做到这一点: