gpt4 book ai didi

java - 信任 CA 和父 CA,但不信任其他派生 CA。 Java应用程序

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

编辑 1:https://security.stackexchange.com/questions/83972/trust-ca-and-parent-ca-but-not-other-derivative-cas .见评论。我的客户端/服务器是在 java 中,所以可能的解决方案涉及实现我自己的 javax.net.ssl.TrustManager 实现。

客户端通过 SSL 安全套接字连接到服务器时遇到问题。我有 3 个 CA:

  • 根 CA:用于签署其他 CA 证书。
  • testers CA:由根 CA 签名,用于签署 beta-tester 客户端证书。
  • 生产 CA:由根 CA 签名,用于签署生产客户端证书。

我想为服务器创建一个信任库:

  • 允许测试人员 CA 的所有签名客户端证书。
  • 允许根 CA 的所有签名客户端证书。
  • 拒绝生产 CA 的所有签名客户端证书。

我的问题:如果我生成的信任库仅包含测试人员 CA 证书,那么由根 CA 签署的客户端证书将失败(我希望证书链允许它)。如果我生成包含测试 CA 和根 CA 的信任库,则还允许使用生产签名的证书。

有什么办法吗?

最佳答案

有一个肮脏的方式!您可以在您的 KeyStore 中断开 Server Cert -> Intermediate Cert (Production CA) 的链,这样 Root CA 就无法验证前者。

从 Keystore 中导出服务器证书条目并从 PEM 文件中删除颁发者(生产 CA)证书并将其导回。

>keytool -exportcert -rfc -file scert.pem -keystore store.jks -alias salias

打开pem文件,第一个-----BEGIN CERTIFICATE-----<>-----END CERTIFICATE-----是服务器证书,下面的是颁发者(Prod CA) .删除颁发者并重新导入 .pem 文件。

> keytool -importcert -keystore store.jks -alias salias -file broken.pem

现在,当服务器证书呈现给客户端时,由于服务器证书 -> 生产 CA-> 根 CA 已损坏,TrustStore 中的根 CA 无法对其进行验证。

关于java - 信任 CA 和父 CA,但不信任其他派生 CA。 Java应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29097058/

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