Openssl 如何在不使用';我没有证书
我制作了一个由本地机器上创建的CA签名的openssl证书 此证书已被删除,我不再拥有它 无法使用相同的commonName创建另一个证书,因为openssl不允许它,并且将生成错误:Openssl 如何在不使用';我没有证书,openssl,certificate-revocation,Openssl,Certificate Revocation,我制作了一个由本地机器上创建的CA签名的openssl证书 此证书已被删除,我不再拥有它 无法使用相同的commonName创建另一个证书,因为openssl不允许它,并且将生成错误: failed to update database TXT_DB error number 2 如何撤销证书以创建另一个具有相同commonName的证书?我没有尝试过此方法,但您似乎需要类似的方法 openssl ca -revoke bad_crt_file -keyfile ca_key -cert ca
failed to update database
TXT_DB error number 2
如何撤销证书以创建另一个具有相同commonName的证书?我没有尝试过此方法,但您似乎需要类似的方法
openssl ca -revoke bad_crt_file -keyfile ca_key -cert ca_crt
openssl会自动将您的证书副本保存在newcerts目录中。您可能需要检查它以检索您的证书。很遗憾,您需要一个证书来撤销它。有关详细信息,请参见以下内容:(基于)在默认配置中,openssl将在/etc/ssl/newcerts
中保留所有已签名证书的副本,以其索引号命名。因此grep/etc/ssl/index.txt
获取要撤销的密钥的序列号,例如1013,然后执行以下命令:
openssl ca -revoke /etc/ssl/newcerts/1013.pem #replacing the serial number
Nilesh回答中提到的-keyfile
和-cert
仅在与您的openssl.cnf
设置不一致时才需要
或者,您也可以更改
/etc/ssl/index.txt.attr
以包含该行
unique_subject = no
允许多个具有相同公用名称的证书。如果您已经发布了原始证书,那么撤销旧证书是更好的解决方案,即使您没有运行OSCP服务器或提供CRL。就像其他答案所说的那样,openssl CA通常在子目录中保留签名证书的副本(
newcerts
或certs
或使用easyrsa的密钥
。在您机构的openssl.cnf文件中查找new\u certs\u dir
定义,或在脚本中查找-outdir
选项)
因此,规范的做法是:
openssl ca -config openssl.cnf -revoke newcerts/hello-world.pem
但是,我添加这个答案是为了说明,在当前版本中,opensslca-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
(使用OpenSSL 1.1.1c进行测试。在其他版本/环境中,序列号可以短得多)
openssl ca-config openssl.cnf-gencrl-crldays 30-out crl.pem
将是撤销证书的实际步骤,使用授权机构的私钥生成签名列表。更多详细信息(假设默认配置):Grep/etc/ssl/index.txt
获取要撤销的密钥的序列号,例如1013,然后只需openssl ca-revoke/etc/ssl/newcerts/1013.pem
(替换序列号)只有当-keyfile
和-cert
与您的openssl.cnf
settings@TobiasKienzler这就解决了我的问题。也许这应该是一个完整的答案。@MichaelHampton很高兴听到,我的答案很好!非常感谢!对于easy rsa用户,答案是:/etc/openvpn/easy rsa/revoke full/etc/openvpn/easy rsa/01.pem和所有已签名证书及其索引的列表可以在/etc/openvpn/easy rsa/keys/index中找到。txt@Thassilo很高兴知道,也要感谢你(还有稍微晚了一点的欢迎来到SO:)这正是我所需要的。如果有人在使用OpenVPN的工具(像我一样)搞砸了他们的撤销时来这里寻求帮助,然后您可以复制“revoke full”脚本并对其进行更改。您仍然希望维护CRL(证书吊销列表),因此编辑复制的“revoke full”,并将$OPENSSL ca-revoke“$1.crt”-config“$KEY\u config”
的行更改为:$OPENSSL ca-revoke/etc/openvpn/easy rsa/keys/your-PEM.PEM-config“$KEY\u CONFIG”