如何使用OpenSSL撤销证书并生成CRL

时间:2020-02-23 14:40:21  来源:igfitidea点击:

在本文中,将介绍从Keystone吊销证书并生成CRL的步骤。
我们在上一篇文章中向CA颁发的第一个证书仅仅是为了确保CA正常工作的测试证书。

我们可以看到该证书已正确颁发,但是它实际上是我们不希望任何人都可以使用的证书,因此我们需要撤销该证书。

吊销证书

吊销证书是一个简单的过程。
我们只需要吊销证书的副本即可。
即使我们没有保留已颁发的所有证书的副本,我们创建的CA基础结构也会保留。
我们可以通过这种方式获取证书的副本,但是保留自己的副本并为文件命名有意义的名称要容易得多,因为CA仅用包含每个证书的序列号的证书来命名文件。

在上一篇文章中,我生成了一个额外的私钥,可以用来演示本文。

[root@node3 CA]# cp newcerts/01.pem testcert.pem
[root@node3 CA]# openssl ca -revoke testcert.pem
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:
Revoking Certificate 01.
Data Base Updated

命令行工具会提示我们输入密码。
它正在寻找的密码短语是保护CA私钥的密码短语。
尽管在证书吊销过程中,密钥实际上并未用于任何签名,但仍需要将证书作为CA自己的证书进行验证,并作为安全措施,以确保只有授权使用CA的人才能撤销证书已发行。

证书完全不做任何更改。
实际上,唯一值得注意的更改是对CA的数据库的更改,以表明证书已被撤消。

使用openssl生成CRL

CRL代表证书吊销列表。
CRL包含CA已颁发但尚未过期的所有吊销证书的列表。
吊销证书后,CA声明该证书不再受信任。

请记住,一旦颁发了证书,就无法对其进行修改。
大概是在野外,无法确保存在的证书的每个副本都可以更新。
这是CRL变得重要的地方

[root@node3 CA]# openssl ca -gencrl -out exampleca.crl
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:
[root@node3 CA]# openssl crl -in exampleca.crl -text -noout
Certificate Revocation List (CRL):
        Version 1 (0x0)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: /C=IN/ST=Karnataka/L=bangalore/O=theitroad/OU=TEST/CN=Example/[email protected]
        Last Update: Apr 17 04:37:17 2019 GMT
        Next Update: Jan 17 04:37:17 2019 GMT
Revoked Certificates:
    Serial Number: 01
        Revocation Date: Apr 17 04:26:14 2019 GMT
    Signature Algorithm: sha256WithRSAEncryption
         a7:a9:72:c5:3c:76:31:e1:02:c2:de:ae:46:3e:ff:31:7a:01:
         c1:92:3f:84:b6:05:be:67:7c:5b:e2:d8:c7:49:cd:7b:81:f8:
         76:08:86:9c:1d:e3:80:4e:eb:43:fd:94:7c:e6:0e:59:c7:fe:
         d2:d6:bd:38:03:b6:61:0c:a3:3e:c9:df:c6:f4:92:39:4a:cd:
         8d:9f:c7:93:f8:31:85:23:b0:b3:e0:9b:7d:40:60:02:33:42:
         2c:ed:ee:7a:a3:10:75:36:c8:1c:16:42:8e:dc:6c:b7:22:72:
         3a:d6:d9:96:9c:98:30:43:10:f4:51:3e:7f:e5:e9:b5:42:ad:
         68:dd:2b:d7:c5:fe:ae:aa:e8:96:a6:01:5c:7f:3c:c5:f8:cb:
         0d:df:49:93:c3:3e:b5:45:51:bf:9c:68:95:05:9e:93:ee:59:
         f9:99:d4:1d:8f:39:3a:99:9c:b9:1f:1a:fb:43:84:fe:e3:86:
         bc:a5:75:f1:53:dd:df:0b:5f:73:2a:98:f5:dd:d6:f7:ab:85:
         b0:70:0a:cf:ad:19:98:06:5a:a2:bc:fe:e9:35:ed:96:fc:f0:
         09:e3:f8:44:d9:76:74:2d:4f:ab:54:05:cf:91:14:f6:9d:5e:
         fe:b5:99:75:c9:38:e8:7f:a2:72:79:44:37:30:ab:19:ca:fa:
         ad:43:ab:c6

当我们获得CRL的文本转储时,我们可以看到用于签名的算法,发布它的CA,发布它的时间,发布下一个列表的时间以及所有证书的列表。
它包含。
我们还可以使用crl命令来验证CRL上的签名。