我的 git 客户端声称
error: Peer's Certificate issuer is not recognized.
这意味着它无法在全局系统密钥环中找到相应的 ssl 服务器密钥。我想通过查看来检查这一点所有系统范围内可用的 ssl 密钥的列表在 gentoo Linux 系统上。我怎样才能得到这个列表?
答案1
您想要的不是 SSL 密钥,而是证书颁发机构,更准确地说是他们的证书。
你可以尝试:
awk -v cmd='openssl x509 -noout -subject' '
/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt
获取每个 CA 证书的“主题” /etc/ssl/certs/ca-certificates.crt
(这是有效的,因为openssl
在读取单个证书块后退出,但在下一次调用时awk
重新启动)。openssl
print | cmd
请注意,有时,当 SSL 服务器忘记提供中间证书时,您会收到该错误。
用于openssl s_client -showcerts -connect the-git-server:443
获取正在发送的证书列表。
请注意,证书捆绑包的路径名可能会因操作系统而异。包含子目录的目录certs
由命令给出openssl version -d
。该目录中的实际证书文件可能另外具有不同的名称。
答案2
不确定 Gentoo,但大多数发行版都将其证书软链接放在系统范围的位置,即/etc/ssl/certs
.
- 关键文件进入
/etc/ssl/private
- 系统提供的实际文件位于
/usr/share/ca-certificates
- 自定义证书进入
/usr/local/share/ca-certificates
每当您将证书放入上述路径之一时,请运行update-ca-certificates
以更新/etc/ssl/certs
列表。
答案3
我需要列出我们服务器上的所有证书并通知它们是否到期。我们想出了这个命令:
locate .pem | grep "\.pem$" | xargs -I{} openssl x509 -issuer -enddate -noout -in {}
答案4
另一种就是这个:
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt | openssl pkcs7 -print_certs -noout | grep subject