gpt4 book ai didi

java - 给jvm添加不同的p12证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:43 24 4
gpt4 key购买 nike

我的应用程序中有不同的服务使用 SSL,这些服务使用不同的 .p12 文件来连接不同的密码。现在java在每次调用时加载信任库和 keystore +文件所以我想删除这种行为并默认将证书添加到我的JVM这是我可以使用

-Djavax.net.ssl.keyStore="{mycert.p12}" -Djavax.net.ssl.keyStorePassword={mypassword} -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.trustStore="{cacertsroute}" -Djavax.net.ssl.trustStorePassword=changeit

但是我有不同的 p12 文件,所以我需要将它们连接到一个文件中,因为我无法指定 jvm 在命令行中使用多个 p12 文件和密码。

我创建了一个空的新 p12 文件,并使用 keytool 在里面添加了一个 p12 文件

keytool -importkeystore -srckeystore first.p12 -srcstoretype pkcs12 -srcstorepass firstp12pass -destkeystore newstore.p12 -deststoretype pkcs12 -deststorepass firstp12pass

之后,我有了一个只有一个 p12 的新 keystore ,它可以与使用 first.p12 证书的服务一起使用。我读到 keystore 和 p12 应该有相同的密码,所以为了添加第二个 p12 文件,我创建了一个 temp.p12 文件,将 second.p12 的密码更改为 firstp12pass,所以现在它们有相同的密码,然后我使用与之前相同的命令将 temp.p12(即 second.p12)添加到 newstore.p12。

现在我只有 1 个文件,其中包含针对不同服务的两个条目,但是当我现在使用证书时无法正常工作。

我调试了ssl调用,CN好像不行。当我使用只有一个条目的 p12 调用时,它会将正确的 CN 发送到服务器,但是当我使用 2 个条目时,它不会选择正确的条目。

有人可以帮我解决这个问题吗?也许无法混合这些文件,或者有另一种方法可以做到这一点。

谢谢,

最佳答案

您这样做似乎是为了启用相互证书身份验证,而不是设置简单的 HTTPS 连接器。

我建议将证书合并到一个 .pfx 中,方法是将它们导出为纯文本 .pem 文件并将它们连接起来。这也可以用于手动创建证书链。

  1. 将 PFX 转换为 PEM(同时转换两个 PFX 文件):openssl pkcs12 -in example.pfx -out example.pem -nodes
  2. > Concatenate both PEM files包括BEGIN CERTIFICATEEND CERTIFICATE标签
  3. 将组合的 PEM 文件转换回 PFX:openssl pkcs12 -export -in example.pem -out example-concat.pfx

关于java - 给jvm添加不同的p12证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56257335/

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