【问题标题】:Trust CA and parent CA, but not other derivative CAs. Java application信任 CA 和父 CA,但不信任其他衍生 CA。 Java 应用程序
【发布时间】:2015-03-17 10:44:43
【问题描述】:

编辑 1https://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 的信任库,则还允许生产签名的证书。

有什么办法吗?

【问题讨论】:

  • 我不认为这是特定于 Java 的。您可能会在security.stackexchange.com 获得更好的答案
  • 你可以使用 2 种不同的 root cas 来签名测试和生产吗?
  • konstantin:我需要部署一个“主”客户端来管理测试和生产,但我想让服务器信任库只相信它的签名 CA,所以你的目的也会受到问题的影响。
  • Thomas:谢谢,你可能是对的......我会看看这里是否有任何回复,如果没有,则假设这不是 Java 特定的,并在 security.stackschange.com 中询问。跨度>
  • security.stackexchange.com/questions/83972/… 似乎 x509 证书链验证是这样工作的,并且只涉及受信任的密钥库。做到这一点的唯一方法是实现自定义证书链验证机制。由于可能的解决方案是自定义的,并且我的客户端/服务器在 java 中,因此该解决方案最终必须与 java 相关。如果我想出如何创建自定义链验证器,我会尝试发布自己的答案。

标签: java ssl


【解决方案1】:

有一种肮脏的方式!您可以在 KeyStore 中断开服务器证书 -> 中间证书(生产 CA)的链,以便根 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

现在,当服务器证书提交给客户端时,它无法由 TrustStore 中的根 CA 验证,因为服务器证书 -> 生产 CA-> 根 CA 已损坏。

【讨论】:

  • 这将有助于拒绝根签名证书,同时允许衍生 CA。我想要的是允许 root 和一个衍生 CA,但不允许另一个。
  • 我相信这不会否认 Root 签名,因为我们正在打破一个特定衍生产品、生产 CA 和 Root CA 之间的链条,因此前者颁发的服务器证书无法由 Root CA 验证存在于 TrustStore 中。其他衍生产品和 Root 本身签署的所有证书都应该通过。你可以试试看。
  • 啊,好的,我明白了。因此,关键是将所有子 CA 证书添加到信任库,但确保我在我不想信任的证书中破坏了根 CA 链......我会试一试,让你知道。
猜你喜欢
  • 2018-06-23
  • 2022-07-07
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 2014-10-10
  • 2018-08-20
  • 2010-09-26
相关资源
最近更新 更多