列出所有可用的 ssl ca 证书

列出所有可用的 ssl ca 证书

我的 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重新启动)。opensslprint | 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

相关内容