Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加URL.openStream使用的证书_Java_Android_Https - Fatal编程技术网

Java 添加URL.openStream使用的证书

Java 添加URL.openStream使用的证书,java,android,https,Java,Android,Https,我在Android上有一些使用URL.openStream的代码。出于内部测试目的,我需要能够将其指向使用私有CA的服务器。我们已经有了PEM格式的CA包(因为我们也使用NDK的libcurl),并且希望能够将PEM文件直接读取到URL.openStream使用的任何密钥库(或类似密钥库)中 所以这个问题是一个多部分的问题: 如何获取URL.openStream使用的密钥存储?或者我应该直接使用HttpClient吗 如何将PEM证书添加到所述密钥存储?(即使使用HttpClient) 谢谢。我

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

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

  • 如何获取URL.openStream使用的密钥存储?或者我应该直接使用HttpClient吗
  • 如何将PEM证书添加到所述密钥存储?(即使使用HttpClient)

  • 谢谢。

    我不能专门为Android说话,但至少标准桌面Java有一个默认密钥库,供JVM的所有实例使用,位于/lib/security/cacerts

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

    有关此问题的其他详细信息,请参阅

    如果您想使用HttpClient,可以在和处获得其他参考