我正在编写一个网络应用程序,它需要传入连接才能使用客户端证书来确保安全。我已将其设置为仅接受安全连接,并使用 clientAuth=true。
我一直在尝试检查它是否拒绝已被吊销的证书,但它似乎并没有检查 CRL。这是我第一次真正尝试使用 CRL,所以我可能/可能做错了什么......
测试设置:
- 在已添加到信任库的 openssl 中创建了测试 CA 为服务器
- 为 CA 创建了 CRL,并向 openssl 添加了配置设置以在客户端证书中包含一个 crl 分发点(使用 Howto create a certificate using openssl including a CRL distribution point? )
- 使用 CA 创建了两个客户端证书
- 撤销了其中一个客户端证书,更新了 crl 并将其放置在指定为分发点的地址中(此后检查了 此 CRL 的内容,它确实列出了已撤销的证书 ID)
设置完成后,我尝试使用两个证书连接到应用程序,但即使其中一个证书已被吊销,它也可以成功连接?
我在 Tomcat 中是否遗漏了一个设置,使其在收到客户端证书时检查 CRL 分发点?我原以为那将是默认行为。
我找到了各种设置引用,这些设置允许您将 crl 位置嵌入到 tomcat 的连接器中 - 这不是我要找的。该系统最终将配置为接受来自许多不同 CA 的证书。
最佳答案
假设您使用的是 Oracle/OpenJDK JRE,如果您在 Certification Path API guide (Appendix B) 底部向下滚动,您会发现可以使用 com.sun.security.enableCRLDP
系统属性启用 CRLDP:
Support for the CRL Distribution Points extension is available. It is disabled by default for compatibility and can be enabled by setting the system property
com.sun.security.enableCRLDP
to the valuetrue
.
您可能还对以下有关 OCSP 的部分感兴趣。
关于tomcat - 配置 Tomcat 以检查 CRL 分发点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798966/