如何获取主机的“受信任”证书?

如何获取主机的“受信任”证书?

背景:在 PHP 中,打开CURLOPT_SSL_VERIFYPEER并执行大量请求最终会在内存中留下大量 CA 捆绑包副本(curl_close没有帮助)。解决方法是使用最小的 CA 捆绑包,从 中提取相关的 CA 证书/etc/pki/tls/certs/ca-bundle.crt并在CURLOPT_CAINFO.

问题:缺少的部分是如何将其自动集成到发布过程中,以便它

  1. 验证主机证书是否可信并且
  2. 提取用于验证主机证书的 CA 证书到一个单独的文件中。

这是必要的,以确保如果主机更改其证书提供者(罕见且不太可能),我们仍然可以轻松更改我们的捆绑包。

最后一点我该怎么做可靠吗? openssl s_client -connect example.com:443 -showcerts既不显示验证证书的序列号也不显示其完整内容。 C/O/CN 属性显然在 CA 捆绑包中应该是唯一的,但依赖解析它似乎很脆弱,而且我不知道如何可靠地查询(而不是通过grepping 增加脆弱性)C 的 CA 捆绑包/O/CN 组合。

相关版本:

# php --version | head -n1
PHP 5.4.16 (cli) (built: Nov  6 2016 00:29:02)
# rpm -qi libcurl | grep ^Version
Version     : 7.29.0
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
# uname --kernel-name --kernel-release --kernel-version --processor
Linux 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64

相关内容