我可以只使用它的序列号(不是 crt/pem)来撤销客户端证书吗?

信息安全 证书 openssl 证书吊销 串行
2021-09-12 04:51:51

我已经使用我的 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 没有提供该选项。

所以我的问题是,是否有一种仅使用其序列号来撤销证书的犹太方式?或者是否有重要的原因导致没有这样做?如果像上面那样手动编辑数据库文件会遇到问题吗?

1个回答

在 X509 中,使证书唯一的字段是颁发者和序列号的组合。只有序列号不能保证唯一,因为两个 CA 可能使用相同的序列号。这就是撤销通常需要两者的原因。在实践中,如果你只有一个 CA,当然序列号就足够了。但这不是通用的。手动编辑数据库应该没有问题,因为这与命令的作用相同