我正在尝试通过添加到server.xml文件中的TLS连接器的crlFile属性来添加对Tomcat中已撤销证书的检查。
不幸的是,这使得Tomcat拒绝所有TLS连接请求,即使它们的证书有效。
有什么理由?
修改
我打开了仅用于SSL的java调试标志,我从日志中得到了这个例外
16:50:14,348 INFO [STDOUT] %% Invalidated: [Session-1, TLS_DHE_RSA_WITH_AES_256_CBC_SHA]
16:50:14,349 INFO [STDOUT] http-127.0.0.1-8444-1
16:50:14,350 INFO [STDOUT] , SEND TLSv1.1 ALERT:
16:50:14,350 INFO [STDOUT] fatal,
16:50:14,351 INFO [STDOUT] description = certificate_unknown
16:50:14,351 INFO [STDOUT] http-127.0.0.1-8444-1, WRITE: TLSv1.1 Alert, length = 2
16:50:14,351 INFO [STDOUT] http-127.0.0.1-8444-1, called closeSocket()
16:50:14,352 INFO [STDOUT] http-127.0.0.1-8444-1, handling exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Could not determine revocation status
答案 0 :(得分:0)
检查CRL文件的到期时间戳 。
$ date -Is
2016-01-11T17:33:23+0100
$ openssl crl -text -noout -in crl.pem
Certificate Revocation List (CRL):
Version 1 (0x0)
Signature Algorithm: sha256WithRSAEncryption
Issuer: <WHATEVER>
Last Update: Dec 11 17:47:52 2015 GMT
Next Update: Jan 10 17:47:52 2016 GMT
Revoked Certificates:
Serial Number: 03
Revocation Date: Dec 11 17:31:41 2015 GMT
Serial Number: 04
Revocation Date: Dec 11 17:47:52 2015 GMT
Signature Algorithm: sha256WithRSAEncryption
<CHECKSUM OMITTED>
如果过去Next Update
时间,则可能是导致问题的原因。把这个到期时间推迟到未来应该解决它。
不幸的是,OpenSSL似乎没有提供任何简单的方法来阻止过期日期;但re-revoking an already revoked certificate使用OpenVPN的easy-rsa
脚本具有预期的效果。如果您已经开始使用easy-rsa
,这会更容易,但即使您不是,也可能仍然可以。
$ cd easy-rsa
$ source ./vars
$ ./revoke-full revokeme
Using configuration from /foo/easy-rsa/openssl-1.0.0.cnf
ERROR:Already revoked, serial number 03
Using configuration from /foo/easy-rsa/openssl-1.0.0.cnf
revokeme.crt: <DISTINGUISHED NAME HERE>
error 23 at 0 depth lookup:certificate revoked
现在将crl.pem
文件部署到Tomcat服务器中,然后重新启动服务器。
我会在此问题上添加此评论,但由于问题已超过一年,因此OP不太可能仍然遇到问题。
我在Web应用程序项目中使用客户端证书进行身份验证,上周五一切正常。今天,在星期一,所有客户端证书显然都是无效的,尽管没有更改配置且没有证书过期。
再次从Tomcat crlFile
中的<Connector>
元素中删除server.xml
属性使得客户端证书通过握手,但当然这也使得撤销的证书&#34;有效&# 34;因为不再检查撤销。上面的过程解决了我的问题。