将 cacert 卷曲到 Java HttpClient 等效项

Posted

技术标签:

【中文标题】将 cacert 卷曲到 Java HttpClient 等效项【英文标题】:Curl cacert to Java HttpClient equivalent 【发布时间】:2012-08-16 02:24:36 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

keytool -import -file cacert.pem -alias myca -keystore truststore.jks

然后您需要将此密钥库用作信任库。

如果您只想为特定连接执行此操作,请关注this answer。

如果您想对应用程序中的所有连接(或至少不更改默认值的连接)执行此操作,您可以使用javax.net.ssl.trustStore(及相关)系统属性(请参阅Customization section of the JSSE Reference Guide)。如果您想为整个应用程序执行此操作,问题是默认的受信任 CA 将不包括在内。解决此问题的一种简单方法是复制与 JRE 捆绑在一起的 cacerts 文件,并将其用作 truststore.jks 的起点。

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

(您还可以在this answer 中找到更多关于 keystore 和 truststore 的区别。)

【讨论】:

以上是关于将 cacert 卷曲到 Java HttpClient 等效项的主要内容,如果未能解决你的问题,请参考以下文章

卷曲工作,但 python 请求因 SSLError 而失败

无法将 .p12 证书导入 cacerts

如何把安全证书导入到java中的cacerts证书库(转)

如何把安全证书导入到java中的cacerts证书库

将 POST 卷曲到 C#

如何将图像从页面卷曲显示到另一个视图?