繁体   English   中英

配置Apache Tomcat 7.0以拒绝具有过期客户端证书的连接

[英]Configuring Apache Tomcat 7.0 to reject connections with expired client certificates

考虑将Apache Tomcat 7.0配置为进行客户端身份验证(连接器的参数clientAuth设置为true )。

看起来,默认情况下,Tomcat信任已过期的客户端证书,这些证书位于其受信任的存储区中(允许它们成功进行身份验证)。

是否可以将Apache Tomcat 7.0配置为不信任并自动拒绝此类过期的客户端证书(即使它们位于其受信任的存储区中)?

看来,这可以通过设置另一个trustManagerClassName来实现,默认情况下为X509TrustManagerImpl 但是我不知道,默认算法真的允许过期的证书吗? 在这里应该使用现有的哪一个? 还是我必须自己实现并将其放入tomcat的库?

UPD :我发现了一个非常类似的问题: 过期证书上的Java trustmanager行为,但是答案中没有任何适当的解决方案。 我正在寻找X509TrustManager现有更安全的实现,它将检查证书的到期时间。

我认为您最好的选择是编写自己的X509TrustManager并使用自己的checkClientTrusted实现。 不幸的是,除非您可以找到另一个要扩展的类来繁重地管理信任库,撤销等,否则您可能必须编写大量的管道代码。

可能值得您花时间用调试器来遍历JRE的类,以查看默认X509TrustManager发生的事情-可能是配置错误,或者Tomcat可能未启用某些对大多数人有意义的功能。

仅查看Java 8的反编译源,就好像归结到sun.security.validator.SimpleValidator一样,它在检查证书的有效性时似乎考虑了(当前)日期。 我希望JRE本身在某个时候抛出CertificateExpiredException 我认为Tomcat无法管理任何此类操作。

关于SO的另一个问题是无所事事地猜测会发生什么,但并没有真正确定的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM