【问题标题】:Only accept certain certificates只接受某些证书
【发布时间】:2014-06-07 16:23:14
【问题描述】:

我创建了自己的 CA,我想使用它的证书与使用 SSLSockets 的服务器进行通信。我可以使用我当前使用的信任库来做到这一点,但我希望限制更多,以便我的服务器只接受来自我明确决定的客户端的连接,这些客户端必须拥有由我的 CA 签名的证书(现在,任何拥有我的 CA 签署的证书被授予访问权限)。这背后的目标是能够通过从服务器的信任库中删除一些证书来撤销证书。

假设有两个设备 A 和 B,它们都具有我的 CA 签署的证书。我只想授予对 A 的访问权限,而不是 B。如果我只有在服务器的信任库 A 的证书中,我会得到两个客户端的 BadCertificate 异常;在我添加我的 CA 的 pem 文件的那一刻,A 和 B 都被授予访问权限,无论 A 或 B 的证书是否显式添加到信任库。

这种方法有什么想法或替代方法吗?谢谢。

【问题讨论】:

    标签: java ssl truststore


    【解决方案1】:

    PKI 基础架构的吊销部分(例如,如果您拥有自己的 CA)通常使用 CRL(证书吊销列表)或 OCSP(在线证书状态协议)来完成。

    如果这对于只有少数客户端的小型 PKI 来说工作量太大,您还可以将您接受(白名单)或被撤销(黑名单)的证书的指纹硬编码到您的应用程序中,并检查每个连接是否您获得的证书与指纹匹配。当然,您需要在每次撤销(黑名单)或每当您颁发新证书(白名单)时更新应用程序,因此这不能很好地扩展。但是同样的问题也出现在需要分发给每个客户端的 CRL 上。

    OCSP 的扩展性更好,因为客户端尝试在连接时检索吊销状态,但是您需要设置一个 OCSP 响应器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多