gpt4 book ai didi

Java客户端证书冲突

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:50 26 4
gpt4 key购买 nike

我有一个可以连接到许多外部服务的工作应用程序。我正在添加一个需要客户端身份验证的新 SOAP 客户端。我能够让它工作,但不会破坏应用程序中的其他东西,所以我对发生的事情感到非常困惑。一些简单的背景知识:

  1. 我们使用默认的 cacerts 文件,并在其中导入了许多受信任的证书。
  2. 我们创建了一个私钥,从中生成了一个证书请求,获取了一个证书,并创建了一个包含用于客户端身份验证的证书和私钥的 p12 文件。
  3. 如果我们指定 p12 文件作为应用程序的 keystore ,则 SOAP 客户端可以正常工作:

-Djavax.net.ssl.keyStore="keystore.p12"-Djavax.net.ssl.keyStorePassword="密码"-Djavax.net.ssl.keyStoreType="pkcs12"

  • 如果我们不执行上述操作,而是将其导入到 cacerts 文件中,执行以下操作:
  • keytool -importkeystore -srckeystore keystore.p12 -destkeystore cacerts -srcstoretype pkcs12

    它不起作用!如果我们这样做并按照步骤 3 指定 cacerts 作为 keystore (不包括最后一个参数,因为它是不同的存储类型,对吧?),它也不起作用。

    因此,通过步骤 1-3,我们的新集成可以正常工作,但问题是应用程序中的其他内容现在会损坏!之前没有指定其他 keystore (我的理解是它无论如何都默认为 cacerts)。我们现在遇到错误,例如 AWS 的 SES(电子邮件)服务抛出异常,例如:

    • java.lang.RuntimeException:无法实例化 com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient 类的实例
    • com.amazonaws.AmazonClientException:无法访问默认 SSL 上下文
    • java.security.NoSuchAlgorithmException:构造实现时出错(算法:默认,提供程序:SunJSSE,类:sun.security.ssl.SSLContextImpl$DefaultSSLContext)
    • java.security.UnrecoverableKeyException:无法恢复 key

    有人可以向我解释一下造成此冲突的原因以及如何解决它吗?非常感谢您的帮助!

    杰夫

    最佳答案

    不确定但有可能:

    JKS 格式的私钥条目上的密码可以与包含存储(文件)上的密码不同,但许多应用程序(包括所有使用 javax.net.ssl.keyStore* 属性的应用程序)无法处理该问题。

    确保 p12 上的预导入密码(覆盖存储和 key 的单个密码)与目标 jks 上的存储密码(对于已安装的 cacerts 来说是 changeit)相同,或者指定具有相同值的 -deststorepass -destkeypass

    关于Java客户端证书冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442843/

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