如何将条目插入证书吊销列表

How to insert entries into a Certificate Revocation List

我有一个现有的 CRL,我想通过 SSLCARevocationPath 指令将其用于我的 apache 实例。为了测试它并确保它正常工作,我想在 CRL 中为我自己的 PIV 证书信息添加一个条目。此条目将如下所示:

Serial Number: E2C72718B5E0EXXXXXXXXXXXXXXXXXXXXXXXX
        Revocation Date: Nov 28 13:37:30 2018 GMT
        CRL entry extensions:
            X509v3 CRL Reason Code:
                Affiliation Changed

我拥有的 CRL 文件本质上是这样的条目列表。但是我似乎无法找到一种方法来使用 openssl 之类的东西将我的条目插入到文件中,并且无法在 Notepad++ 中直接编辑该文件。有没有无需生成新 CRL 即可执行此操作的方法?

CRL 与证书一样,经过签名以防止伪造或篡改,因此您不能 'edit' 它,您必须生成一个新的 -- 但请参阅下文。

OpenSSL commandline 只能使用其自身廉价且愉快的 DIY CA 功能的 'database' 中的条目生成 CRL,即通常名为 index.txt。由于您想要的证书(以及 CRL 中的任何其他证书)实际上并不是由您的 OpenSSL DIY CA 颁发的,因此要使用它,您必须 'reconstruct' 如果您这样做会创建的 index.txt .对于一个证书并假设 1.0.2 及配置文件中的适当设置,您可以使用 openssl ca -valid $certfile。有关具有数百个 'missing' 证书的案例的更复杂解决方案,请参阅 https://unix.stackexchange.com/questions/320038/easy-rsa-index-txt-serial-and-duplicates(披露:部分是我的)

或者您可以编写一些代码来调用 OpenSSL library 以使用您想要的数据构建一个 X509_CRL 对象,然后对其进行签名。这甚至会成为 SO 的主题!

但是,要使 CRL 有效,它必须由颁发被吊销证书的同一 CA 签名,或者由该 CA 签名的特殊用途从属证书本身签名。我假设您的 PIV 证书是由某个 Fed-PKI CA 颁发的,并且您不拥有该 CA 的私钥。 (如果你是,这是一个相当重大的安全漏洞,虽然不是斯诺登或 OMB 的级别——可能与曼宁有关。或者在私营部门 Ashley Madison。)鉴于你可以改变 Apache 的信任库,你可以创建自己的 DIY CA使用与真实 CA 相同的名称,然后让 Apache 信任该假根——但随后它将真实 CA 颁发的(真实)证书链接到假根,并且 它们不会验证。

所以简而言之,您应该创建自己的测试数据。创建一个 DIY CA,为自己颁发一个证书(或多个 - 您可以根据自己的喜好向自己收取费用,并且在网上它不会花费您任何费用!),标记证书或其中一些已撤销并生成CRL,并用它们进行测试。