我正在编写一个 webapp,它需要传入连接才能使用客户端证书来确保安全。我已将其设置为仅接受安全连接,并使用 clientAuth=true。
我一直在尝试检查它是否拒绝已被吊销的证书,但它似乎没有检查 CRL。这是我第一次真正尝试使用 CRL,所以有可能/很可能我做错了什么......
测试设置:
- 在 openssl 中创建了测试 CA,它已添加到服务器的信任库中
- 为 CA 创建 CRL,并将配置设置添加到 openssl 以在客户端证书中包含 crl 分发点(使用 如何使用包含 CRL 分发点的 openssl 创建证书?)
- 使用 CA 创建了两个客户端证书
- 撤销了其中一个客户端证书,更新了 crl 并将其放置在指定为分发点的地址中(此后检查了此 CRL 的内容,它确实将证书的 ID 列为已撤销)
设置完成后,我尝试使用这两个证书建立与应用程序的连接,但是即使其中一个被撤销,它也可以让两者成功连接?
我在 Tomcat 中是否遗漏了一个设置,使它在收到客户端证书时检查 CRL 分发点?我会认为这将是默认行为。
我发现了对设置的各种引用,这些设置允许您将 crl 位置嵌入到 tomcat 中的连接器中——这不是我想要的。该系统最终将被配置为接受来自多个不同 CA 的证书。