领导...到目前为止,我不是通过SSL的应用程序安全性的专家,但是正在尝试建立一个测试环境,其中包括我们在生产中可能遇到的所有可能场景。为此,我有一棵证书局(CA)树,是各种测试客户端证书的发行人,以及节点/服务器证书(代表我们集成的各种已发布的Web服务和其他应用程序的复杂测试环境)。

这些CAS的结构如下:root CA,已签名/发行的子CA1,Sub Ca2和sub Ca3。然后,这些潜艇签署/签发了环境中各种节点和客户的所有证书。

现在,对于这个问题。...在我的应用程序的信托店中,我想信任Sub CA1和Sub Ca2签名的所有内容,但不是Sub Ca3(不受信任)。这是否意味着我的信托店应(1)仅包括SUB CA1和SUB CA2,或(2)应该包括root Ca,sub Ca1和sub Ca2?

我不知道在信托基地中代表这个信任链的正确方法是什么。将来,我还想添加一个子CA4(也由Root CA签名/发行),但将其添加到证书撤销列表(CRL)中以进行测试。

提前,感谢您对此的任何帮助。非常感谢。

有帮助吗?

解决方案

警告:我不会测试这个,所以我希望我的答案是正确的。

我认为您的基本假设是正确的。我不相信您可以在不编写自定义代码的情况下选择性地撤销信任,因此您的信托店应只包含完全信任的证书。因此,将root ca放在外面,然后选择您的选项(1)。

如您所见,试图强制执行此类细粒度访问控制不适合Java(以及其他所有系统)基于X509证书的身份验证模型。它们基本上旨在将身份验证外包给Verisign,Thawte,Godaddy,Globalsign等,以获得SSL证书和代码签名证书。它可以支持其他型号,包括自我签名的证书,但并非没有大量的前期疼痛和持续的维护头痛。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top