如何在没有证书时撤销openssl证书

les*_*usz 52 openssl certificate-revocation

我制作了一个由本地机器上创建的CA签名的openssl证书.

此证书已删除,我不再拥有它.

创建具有相同commonName的另一个证书是不可能的,因为openssl不允许它并将生成错误:

failed to update database
TXT_DB error number 2
Run Code Online (Sandbox Code Playgroud)

如何撤销证书以创建具有相同commonName的另一个证书?

Tob*_*ler 72

(基于Nilesh的回答)在默认配置中,openssl将保留所有已签名证书的副本/etc/ssl/newcerts,并以其索引号命名.所以grep /etc/ssl/index.txt获取要撤销的密钥的序列号,例如1013,然后执行以下命令:

openssl ca -revoke /etc/ssl/newcerts/1013.pem #replacing the serial number
Run Code Online (Sandbox Code Playgroud)

-keyfile-cert如果从你会偏离Nilesh制作的答复中提到,才需要openssl.cnf设置.


或者,您也可以更改/etc/ssl/index.txt.attr为包含该行

unique_subject = no
Run Code Online (Sandbox Code Playgroud)

允许具有相同公用名的多个证书.如果您已发布原始证书,则撤销旧证书是更好的解决方案,即使您未运行OSCP服务器或提供CRL也是如此.

  • 很棒的答案!非常感谢!对于easy-rsa用户,它是:/ etc/openvpn/easy-rsa/revoke-full /etc/openvpn/easy-rsa/01.pem,所有签名证书及其索引的列表都可以在/ etc/openvpn中找到/easy-rsa/keys/index.txt (4认同)
  • 这正是我所需要的。如果有人在使用OpenVPN的工具(如我)加紧撤销工作时来这里寻求帮助,则可以复制“完全撤消”脚本并对其进行更改。您仍然需要维护CRL(证书吊销列表),因此编辑复制的“吊销已满”,并将$ OPENSSL ca-吊销“ $ 1.crt” -config“ $ KEY_CONFIG”的行更改为: `$ OPENSSL ca-撤销/etc/openvpn/easy-rsa/keys/YOUR-PEM.pem -config“ $ KEY_CONFIG” (2认同)

Nil*_*esh 8

我没试过,但看起来你需要这样的东西.

openssl ca -revoke bad_crt_file -keyfile ca_key -cert ca_crt

openssl会自动将您的证书副本保存在newcerts目录中.您可能需要检查它以检索您的证书.不幸的是,你需要一张证书来撤销它.有关详细信息,请参阅以下内容:http://www.mad-hacking.net/documentation/linux/security/ssl-tls/revoking-certificate.xml

  • 更多细节(假设默认配置):Grep`/etc/ssl/index.txt`获取要撤销的密钥的序列号,例如1013,然后只是`openssl ca -revoke/etc/ssl/newcerts/1013 .pem`(替换序列号)`-keyfile`和`-cert`仅在与`openssl.cnf`设置不同时才需要 (3认同)

Chl*_*Chl 5

就像其他答案所说,openssl CA 通常在子目录中保留签名证书的副本(newcertscerts,或keys使用 easyrsa。在 openssl.cnf 文件中查找new_certs_dir脚本中您的权限或-outdir选项的定义)。

因此,规范的做法是:

openssl ca -config openssl.cnf -revoke newcerts/hello-world.pem
Run Code Online (Sandbox Code Playgroud)

但是,我添加这个答案是为了注意,在当前版本中,openssl ca -revoke ...似乎只更新index.txt文件(它仍然会要求提供私钥密码,这是有问题的,所以如果您确实没有任何证书备份但仍然有或者index.txt以某种方式检索序列号,您可以查找/组成证书行并更改它:

# before
V   291008172120Z       6DB67443D7E6C2D95D6E2F7F264C05F944964049    unknown /C=FR/CN=coucou.com
# after
R   291008172120Z   191011172218Z   6DB67443D7E6C2D95D6E2F7F264C05F944964049    unknown /C=FR/CN=coucou.com

# Format is 6 fields, tab-separated, and filename is usually 'unknown' :
# CRL doesn't contain nor need the subject so if unavailable, just make up something close
V/R/E   expiration-date revocation-date serial-number   filename    subject
Run Code Online (Sandbox Code Playgroud)

(使用 OpenSSL 1.1.1c 进行测试。在某些其他版本/环境中,序列号可能会短得多)

openssl ca -config openssl.cnf -gencrl -crldays 30 -out crl.pem将是撤销证书的实际步骤,使用颁发机构的私钥生成签名列表。