我已经使用我的 CA 签署并颁发了一些客户端证书。我现在可以像这样撤销它们:
openssl ca -name ${CA_NAME} -revoke ${USERS_DIR}/${USERNAME}.crt -keyfile $SSL_PRIVATE_DIR/ca.key -cert $SSL_CERTS_DIR/ca.crt
(从这里)
但是,这需要访问 new_certs_dir 文件夹中的 *.pems(例如 01.pem、02.pem)。我可以使用这些,但感觉我需要撤销客户证书的唯一信息就是它的序列号。然而,撤销标志的手册页说它必须是 crt/pem 文件:
-revoke filename
a filename containing a certificate to revoke.
我还注意到我可以手动编辑数据库文件,将V(有效,大概)更改为R(撤销,大概)并为第二个时间戳列提供时间戳,如下所示:
V 180408071318Z 01 unknown /C=AU/ST=NSW/O=Blah/OU=Blah/CN=CA
V 180408071319Z 02 unknown /C=AU/ST=NSW/O=Blah/OU=Blah/CN=CA
到
V 180408071318Z 01 unknown /C=AU/ST=NSW/O=Blah/OU=Blah/CN=CA
R 180408071319Z 180408081319Z 02 unknown /C=AU/ST=NSW/O=Blah/OU=Blah/CN=CA
如果我在编辑后生成 crl,
openssl ca -name ${CA_NAME} -gencrl -keyfile $SSL_PRIVATE_DIR/ca.key -cert $SSL_CERTS_DIR/ca.crt -out $SSL_PRIVATE_DIR/ca.crl -crldays 1095
该序列对应的证书不再有效。所以看起来我只需要序列号,尽管 openssl 没有提供该选项。
所以我的问题是,是否有一种仅使用其序列号来撤销证书的犹太方式?或者是否有重要的原因导致没有这样做?如果像上面那样手动编辑数据库文件会遇到问题吗?