如何删除根CA证书?

she*_*ale 7 linux redhat centos arch-linux ssl-certificate

我正在尝试删除根 CA 证书,但trust anchor --remove官方Red Hat 8 文档中指定的命令给出了只读错误。

sudo trust anchor --remove --verbose "pkcs11:id=%c6%41%4f%df%64%5d%6c%2c%7b%ca%bc%bd%3e%b2%d4%85%cd%59%a7%49;type=cert"

(p11-kit:2482) remove_all: removing certificate: 19
p11-kit: couldn't remove read-only certificate
Run Code Online (Sandbox Code Playgroud)

文档中没有任何关于此的内容。

小智 11

我在文档中也找不到任何重制的内容。但是,该命令似乎trust将手动添加到系统范围信任存储中的证书视为只读证书,并且不支持删除这些证书。

您要删除的证书可能是手动复制的或通过脚本复制到目录/etc/pki/ca-trust/source/anchors//etc/pki/ca-trust/source//etc/ca-certificates/trust-source/在 Arch Linux 上)。您仍然可以手动删除它:

sudo rm /etc/ca-certificates/trust-source/example.pem
Run Code Online (Sandbox Code Playgroud)

您需要update-ca-trust随后运行才能应用更改:

sudo /usr/bin/update-ca-trust
# test if CA certificate is not trusted anymore:
curl -sv https://example.com
Run Code Online (Sandbox Code Playgroud)

有关该命令的更多信息,请参阅手册页update-ca-trust(8) 。

此行为与通过命令添加的证书不同trust.p11-kit这些证书在系统范围的信任存储中具有扩展名,并且格式也与导入的 PEM 文件不同:

# This file has been auto-generated and written by p11-kit. Changes will be
# unceremoniously overwritten.
[...]
[p11-kit-object-v1]
[...]
Run Code Online (Sandbox Code Playgroud)

删除 Mozilla CA / nss-trust 证书/将其列入黑名单

使用该命令删除/不信任 Mozilla CA / nss-trust 证书颁发机构trust也会失败(至少在 Arch Linux 上):

$ sudo trust anchor --remove --verbose pkcs11:id=%C4%A7%B1%A4%7B%2C%71%FA%DB%E1%4B%90%75%FF%C4%15%60%85%89%10;type=cert
(p11-kit:10401) remove_all: removing certificate: 103
p11-kit: couldn't remove read-only certificate
(p11-kit:10401) remove_all: removing x-trust-assertion: 460
p11-kit: couldn't remove read-only x-trust-assertion
(p11-kit:10401) remove_all: removing nss-trust: 461
p11-kit: couldn't remove read-only nss-trust
p11-kit: 3 errors while processing
Run Code Online (Sandbox Code Playgroud)

如果您不想信任此列表中的证书颁发机构,可以将证书复制到黑名单目录中:

# This file has been auto-generated and written by p11-kit. Changes will be
# unceremoniously overwritten.
[...]
[p11-kit-object-v1]
[...]
Run Code Online (Sandbox Code Playgroud)

在此示例中,Let's Encrypt 的根 CA 不受信任。您可以测试curl黑名单是否成功:

$ sudo trust anchor --remove --verbose pkcs11:id=%C4%A7%B1%A4%7B%2C%71%FA%DB%E1%4B%90%75%FF%C4%15%60%85%89%10;type=cert
(p11-kit:10401) remove_all: removing certificate: 103
p11-kit: couldn't remove read-only certificate
(p11-kit:10401) remove_all: removing x-trust-assertion: 460
p11-kit: couldn't remove read-only x-trust-assertion
(p11-kit:10401) remove_all: removing nss-trust: 461
p11-kit: couldn't remove read-only nss-trust
p11-kit: 3 errors while processing
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到服务器故障。请继续回来并提供像这样的高质量答案。 (2认同)