ホストの「信頼できる」証明書を取得するにはどうすればよいですか?

ホストの「信頼できる」証明書を取得するにはどうすればよいですか?

背景: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バンドル内で一意である必要がありますが、検証に依存すると脆弱に見え、grepC / O / CNに対してCAバンドルを確実に照会する方法(pingを介して脆弱性を追加せず)がわかりません。コンビネーション。

関連バージョン:

# 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

関連情報