导入...到目前为止,我不是通过SSL的应用程序安全方面的专家,但我正在尝试建立一个测试环境,其中包括我们在生产中可能遇到的所有可能的场景。为此,我有一个证书颁发机构(CA)树,它是各种测试客户端证书和节点/服务器证书(代表各种已发布的web服务和与之集成的其他应用程序的复杂测试环境)的颁发者。
这些CA的结构如下:根CA,具有已签名/颁发的子CA1、子CA2和子CA3。然后,这些subs已经签署/颁发了环境中这些不同节点和客户端的所有证书。
现在是问题..。在我的应用程序的信任库中,我希望信任由子CA1和子CA2签名的所有内容,但不信任子CA3 (不受信任的)。这是否意味着我的信任库应该(1)仅包含子CA1和子CA2,或者(2)它是否应该包括根CA、子CA1和子CA2?
我不知道在信任库中表示这个信任链的正确方式是什么。将来我还想添加子CA4 (也由根CA签名/颁发),但出于测试目的将其添加到证书吊销列表(CRL)。
在此之前,感谢您对此的任何帮助。非常感谢。
发布于 2010-05-30 21:41:48
注意:我不打算测试这个,所以我希望我的答案是正确的。
我认为你的基本假设是正确的。我不相信您可以在不编写自定义代码的情况下有选择地撤销信任,因此您的信任库应该只包含完全受信任的证书。因此,去掉根CA并选择您的选项(1)。
正如您所看到的,试图强制实施这种细粒度的访问控制并不适合Java语言(以及大多数其他系统)的X509证书-based身份验证模型。它们的主要目的是将身份验证外包给Verisign、Thawte、GoDaddy、GlobalSign等,以获得SSL证书和代码签名证书。它可以支持其他模型,包括自签名证书,但不能没有相当大的前期痛苦和持续的维护难题。
https://stackoverflow.com/questions/2935603
复制相似问题