我有一个现有的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?
答案 0 :(得分:0)
与证书一样,CRL也经过签名以防止伪造或篡改,因此您不能对其进行“编辑”,必须生成一个新的-但请参见下文。
OpenSSL 命令行只能使用其自己廉价的DIY CA函数的“数据库”中的条目(即通常名为index.txt
的文本文件)生成CRL。由于您想要的证书(以及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的私钥。 (如果您是一个相当大的安全漏洞,尽管不是在Snowden或OMB级别上-可能是在Manning上。或者在私营部门Ashley Madison上。)鉴于您可以更改Apache的信任库,则可以创建自己的DIY CA使用与真实CA相同的名称,然后让Apache信任该伪造的根-但这会将真实CA颁发的(真实)证书链接到伪造的根,而 they 不会验证。
因此,简而言之,您应该创建自己的测试数据。创建一个DIY CA,向您自己颁发证书(或多个证书-您可以向自己收取最高的费用,并且在网上它不会花费您任何费用!),标记该证书或其中的一些证书被吊销并生成CRL,并进行测试。