【问题标题】:Concatinating cert and key file so that it can be included in java cacert file连接证书和密钥文件,以便它可以包含在 java cacert 文件中
【发布时间】:2015-09-18 10:26:43
【问题描述】:

我们已经从我们的客户那里获得了我们提供给他们的 CSR 证书。

基本上我已经获得了 abc.pem 和 abc.cert 文件。

abc.key 是我们用来生成 CSR 的那个。

openssl req -out abc.csr -new -newkey rsa:2048 -nodes -keyout abc.key

通过以下 curl 我能够给客户打电话。

C:\Sanjay\Work\17MM\Curl\curl-7.43.0-win32\bin>curl --cert "abc.cert" --key abc.key -X GET -H Accept:application/json -H Content-Type:applica tion/json -v "https://client.com"

我的问题: 我们希望将密钥文件和证书文件组合为一个,以便我们可以将其包含在 cacert C:\Program Files\Java\jdk1.7.0_51\jre\lib\security 中,这样当我们通过骆驼或 apache http 客户端发出请求时,它会从 cacert 中选择证书。

请推荐!

【问题讨论】:

  • 整个过程从头到尾都是错的。您似乎不了解cacerts 文件的功能。客户不应该给你他的私钥,或者你不应该为他生成它,无论是哪种情况。他必须生成一个新的密钥对自己,和一个CSR。必要时指导他。泄露私钥是表面上的安全漏洞。

标签: java ssl curl


【解决方案1】:

cacerts 文件是默认的truststore。就文件格式而言,它是一个密钥库,但它用作信任库(用于验证远程方的身份),而不是密钥库(用于向远程方证明您的身份)。

您不应将您的私钥和最终实体证书 (EEC) 放入 cacerts

  • 最好将密钥库和信任库分开(因为信任库可以公开)。
  • Java 中没有默认密钥库。 cacerts 默认仅用作信任库。

从您拥有的文件中,最简单的选择是构建一个 PKCS#12 (.p12) 文件并将其与 PKCS12 密钥库类型一起使用。然后,您可以使用javax.net.ssl.keyStore 系统属性指向它,并使用javax.net.ssl.keyStoreType=PKCS12 指向类型,并设置javax.net.ssl.keyStorePassword,除非您的客户端库也有自己的加载密钥库的方式。

【讨论】:

  • 谢谢布鲁诺。如果我理解正确,您的建议是,从 abc.key 和 abc.cert 创建 PKCS#12(.p12) 文件。并将新创建的文件包含在密钥库中。
猜你喜欢
  • 2021-10-04
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 2022-06-27
  • 2016-03-15
  • 2016-09-06
  • 2020-03-23
  • 2020-12-27
相关资源
最近更新 更多