Hello colleagues!
I need help with revocation of client certificate in OpenSSL (v 0.9.8n).
I have setup a CA with self-signed certificate so I can generate and sign
client certificates which are used to access squid, which in turn forwards
traffic to exchange server.
In squid.conf file there is this line which is responsible for asking client
certificate:
##
clientca=/root/sslCA/cacert.pem capath=/root/sslCA
##
/root/sslCA/cacert.pem is CA certificate.
I also created a crl.pem in /root/sslCA/crls/ for certificate revocation.
The situation is as follows:
If a client connects without having a client certificate installed it gets
error (Error code: ssl_error_handshake_failure_alert), and no connection is
established.
If the certificate generated with OpenSSL CA is installed on the client then
it can connect to the server.
So far so good.
Now I want to disallow one client to connect to the server.
I revoke the certificate:
# openssl ca -revoke username.crt
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for /root/sslCA/private/cakey.pem:
Revoking Certificate 1003.
Data Base Updated
Update crl:
# openssl ca -gencrl -out /root/sslCA/crls/crl.pem
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for /root/sslCA/private/cakey.pem:
I check to see if the certificate is revoked:
# openssl crl -in /root/sslCA/crls/crl.pem -noout -text
Certificate Revocation List (CRL):
Version 2 (0x1)
Signature Algorithm: xxxxxx
Issuer: xxxxxx
Last Update: Oct 1 22:04:24 2012 GMT
Next Update: Sep 29 22:04:24 2022 GMT
CRL extensions:
X509v3 CRL Number:
4098
Revoked Certificates:
Serial Number: 1003
Revocation Date: Oct 1 22:02:32 2012 GMT
It shows that certificate 1003 is revoked.
Now I try to connect to the server with this client's certificate and the
connection establishes just fine.. How is it possible???
I thought if you revoke a certificate it won't be accepted by CA anymore??
but in my case it is accepted even though CA shows certificate's status as
revoked.
How can I prohibit/invalidate the certificate of the client so it cannot
connect to the server anymore?
Thank you in advance for any helpful suggestions
Yuriy