0

我有一个现有的 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 的情况下做到这一点?

4

1 回答 1

1

CRL 与证书一样,经过签名以防止伪造或篡改,因此您无法“编辑”它,您必须生成一个新的 - 但请参见下文。

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

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

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

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

于 2018-11-28T17:46:43.793 回答