有没有办法黑名单颁发给特定用户的客户端证书?
我目前遇到的情况是,一些恶意行为者拥有我网站的客户端证书,但我不知道如何阻止他们使用它。
Apache2
我目前在 CentOS 机器上运行,但NGINX
如果需要的话可以迁移到。
答案1
请求颁发证书的 CA 撤销该证书。 CA(应该)定期发布证书吊销列表(CRL),本质上是任何依赖方(在本例中为您的 Apache 服务器)不应信任的证书黑名单。
您可以通过查找 CRL 分发点扩展来检查您的 CA 是否颁发 CRL:
$ openssl x509 -noout -text -in example.crt | grep -A1 "Full Name"
Full Name:
URI:http://pki.example.test/cdp/example-CA.crl
该 URL 是依赖方可以下载 CRL 的位置。
或者,CA 可以使用OCSP分发撤销信息。这是一个更复杂的系统,依赖方向响应者查询特定证书的吊销状态。您可以使用以下方法找到它:
$ openssl x509 -noout -text -in example.crt | grep "OCSP"
OCSP - URI:http://ocsp.example.test
这是 OCSP 响应器的 URL。
如果您没有看到其中任何一个,则 CA 不会发布吊销信息,您很可能不走运。
然而,阿帕奇有SSLCA撤销文件选项可以指向通过某种替代方法下载的 CRL。例如,万一 CA 生成 CRL,但不通过上述任一方法分发它们,但愿意通过电子邮件将其发送给您;您可以将其保存到服务器并使用此选项将 Apache 指向它。我建议不太可能。
答案2
得到帮助后garethTheRed
。我编写了一个 Python 脚本来帮助您撤销客户端证书。由于我是我自己的证书颁发机构 (CA),因此我可以轻松获得更新我的 CRL 所需的 CA 私钥。
如果有人遇到类似问题,你也可以。你可以在这里找到我的代码要旨