CentOS Linux release 7.6.1810 (Core)
Kernel 5.1.11-1.el7.elrepo.x86_64
我将证书文件放入/etc/pki/ca-trust/source/anchors
文件看起来像这样:
-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIQeqkpty5ghoxP8YfCRe+7qjANBgkqhkiG9w0BAQUFADBP
some strings
FnpKVwAq6UcYOu4AoXweaqOOMsLNSw==
-----END CERTIFICATE-----
在update-ca-trust extract
我期望在捆绑文件中看到我的证书之后/etc/pki/tls/certs/ca-bundle.crt
,但其中没有任何新内容。并ls -al
显示最新的编辑时间,所以它是在两个月前更改的,而不是现在。
最初我用文件尝试这个.crt
。但重命名.crt
为.pem
并没有解决我的问题。我也尝试过update-ca-trust enable
在update-ca-trust force-enable
提取之前,但没有帮助。
/var/log/messages
对此什么也没说。
我要做什么来修复它?
答案1
长话短说
除非成功,否则不会update-ca-trust
将您的证书文件提取到:ca-bundle.crt
openssl x509 -noout -text -in <cert_file> | grep --after-context=2 "X509v3 Basic Constraints" | grep "CA:TRUE"
我在这个问题上花了几个小时。它的根源在于名为的 X.509 扩展基本约束用于标记证书是否属于CA。
我的粗浅发现:
- 该
update-ca-bundle
工具实际上是一个 shell 脚本,因此很容易查看内部情况 - 该脚本
p11-kit
每次使用不同的过滤器并创建不同的捆绑文件多次调用实用程序。 - 该文件
ca-bundle.crt
实际上是使用过滤器tls-ca-bundle.pem
生成的文件的链接。因此它会忽略除“CA 证书”之外的所有证书。p11-kit
ca-anchors
- 证书是否是 CA 由以下因素决定基本约束X.509 扩展。这样就可以将证书标记为 CA 的一部分。
- 可以使用以下命令列出所有 X.509 扩展
openssl x509 -noout -text -in <cert_file>
- 因此,任何未标记为 CA 一部分的证书文件都将被过滤掉,
p11-kit
并且不会导出到所需的ca-bundle.crt
文件。
请随时在评论中纠正这一点。
答案2
我不知道你到底在问什么,但以下步骤对我有用。我启用“ca trust”,复制文件,提取,然后验证。
$ update-ca-trust enable
$ cp ZScalar.pem /etc/pki/ca-trust/source/anchors/
cp: overwrite ‘/etc/pki/ca-trust/source/anchors/ZScalar.pem’? yes
$ update-ca-trust extract
$ openssl verify ZScalar.crt
ZScalar.crt: OK
如果这些步骤不起作用,请发布“openssl verify”命令的输出,我也许可以进一步指导您。
除此之外,提取的证书转到“/etc/pki/ca-trust/extracted/openssl”或“/etc/pki/ca-trust/extracted/pem”。
答案3
1.获取ca证书的问题
openssl x509 -in ca.crt -noout -text |grep -i "issue"
输出如下:
Issuer: CN=something_strings
2.在/etc/pki/tls/certs/ca-bundle.crt中查找问题
grep -i "something_strings" /etc/pki/tls/certs/ca-bundle.crt
输出如下:
something_strings
如果你能得到结果,那么你的证书就添加成功了。
您需要重新启动服务器才能生效。
答案4
CA 认证应位于 ca-trust 捆绑包内的系统上。 “openssl x509”命令预计一次针对单个 PEM 编码证书进行操作。由于底层捆绑包含许多证书,因此仅显示第一个。
显示所有发行人:
openssl crl2pkcs7 -nocrl -certfile /etc/pki/tls/certs/ca-bundle.crt | openssl pkcs7 -print_certs | grep subject | head