卷曲cacert到Java HttpClient等价物

Tho*_*Kao 5 java ssl httpclient jks keytool

我想知道我是否能够使用curl建立连接,如下面的命令,

curl --cacert some.pem https://someurl.com/resource

如何将其转换为httpclient代码?我知道我需要转换pem文件并创建一个新的密钥库等.但是所有这些openssl,keytool命令,密钥库,信任库让我感到困惑,我不知道使用哪个以及使用哪个顺序.

Bru*_*uno 2

您需要从 PEM 文件创建一个密钥库(您将用作信任库)。这可以按如下方式完成。

keytool -import -file cacert.pem -alias myca -keystore truststore.jks
Run Code Online (Sandbox Code Playgroud)

然后,您需要使用此密钥库作为信任库。

如果您只想针对特定连接执行此操作,则应遵循此答案

如果您想对应用程序中的所有连接(或至少那些不更改默认值的连接)执行此操作,则可以使用javax.net.ssl.trustStore(和相关的)系统属性(请参阅JSSE 参考指南 的自定义部分)。如果您想对整个应用程序执行此操作,问题是不会包含默认的受信任 CA。解决此问题的一个简单方法是制作与 JRE 捆绑在一起的文件的副本cacerts,并将其用作truststore.jks.

或者,您可以将证书直接导入到全局cacerts文件中,但这将使该证书默认受到在此 JRE 上运行的所有应用程序的信任。

(您还可以在此答案中找到有关密钥库和信任库之间区别的更多信息。)