gpt4 book ai didi

java - 添加 URL.openStream 使用的证书

转载 作者:行者123 更新时间:2023-11-30 11:53:13 26 4
gpt4 key购买 nike

我在 Android 上有一些使用 URL.openStream 的代码。出于内部测试目的,我需要能够将其指向使用私有(private) CA 的服务器。我们已经拥有 PEM 格式的 CA bundle (因为我们还使用来自 NDK 的 libcurl),并且希望能够直接将 PEM 文件读取到 URL.openStream 使用的任何 KeyStore(或类似)中。

所以这个问题是一个多部分的问题:

  1. 如何获得 URL.openStream 使用的 key 存储?还是我应该直接使用 HttpClient?
  2. 如何将 PEM 证书添加到所述 key 存储? (即使使用 HttpClient)

谢谢。

最佳答案

我不能专门针对 Android 说话,但至少标准桌面 Java 有一个默认 keystore ,它被 JVM 的所有实例使用,位于/lib/security/cacerts。

在许多情况下,不应针对 JVM 的所有实例全局修改此文件,而应根据具体情况进行修改,正如您已经避开的那样。为此,您不能直接调用 .openStream。相反,得到一个 HttpsURLConnnection调用URLConnection.openConnection() (并将其转换为 HttpsURLConnection)。在此连接上执行任何其他操作之前,设置自定义 SSLSocketFactory通过调用 HttpsURLConnection。 setSSLSocketFactory .从这里开始,您将需要使用自定义 SSLContext 和 TrustManagers。

有关此的一些其他详细信息已在 How can I use different certificates on specific connections? 得到解答。 .

如果您想使用 HttpClient,可以在 http://hc.apache.org/httpclient-3.x/sslguide.html 获得更多引用资料和 How to handle invalid SSL certificates with Apache HttpClient? .

关于java - 添加 URL.openStream 使用的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com