1

我正在编写一个 webapp,它需要传入连接才能使用客户端证书来确保安全。我已将其设置为仅接受安全连接,并使用 clientAuth=true。

我一直在尝试检查它是否拒绝已被吊销的证书,但它似乎没有检查 CRL。这是我第一次真正尝试使用 CRL,所以有可能/很可能我做错了什么......

测试设置:

  1. 在 openssl 中创建了测试 CA,它已添加到服务器的信任库中
  2. 为 CA 创建 CRL,并将配置设置添加到 openssl 以在客户端证书中包含 crl 分发点(使用 如何使用包含 CRL 分发点的 openssl 创建证书?
  3. 使用 CA 创建了两个客户端证书
  4. 撤销了其中一个客户端证书,更新了 crl 并将其放置在指定为分发点的地址中(此后检查了此 CRL 的内容,它确实将证书的 ID 列为已撤销)

设置完成后,我尝试使用这两个证书建立与应用程序的连接,但是即使其中一个被撤销,它也可以让两者成功连接?

我在 Tomcat 中是否遗漏了一个设置,使它在收到客户端证书时检查 CRL 分发点?我会认为这将是默认行为。

我发现了对设置的各种引用,这些设置允许您将 crl 位置嵌入到 tomcat 中的连接器中——这不是我想要的。该系统最终将被配置为接受来自多个不同 CA 的证书。

4

1 回答 1

3

假设您使用的是 Oracle/OpenJDK JRE,如果您在认证路径 API 指南(附录 B)的底部向下滚动,您会发现可以使用com.sun.security.enableCRLDP系统属性启用 CRLDP:

支持 CRL 分发点扩展。出于兼容性考虑,默认情况下禁用它,可以通过将系统属性设置com.sun.security.enableCRLDP为 value来启用它true

您可能还对以下关于 OCSP 的部分感兴趣。

于 2012-10-09T11:41:12.223 回答