私はこのコマンドを使用しています:
openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/GTE_CyberTrust_Global_Root.pem
できます。そのCAfileを指定しない場合、コード20を取得します。証明書は/etc/ssl/certs
および/usr/lib/ssl/certs -> /etc/ssl/certs
にあります。これはca-certificates.crt
にも含まれています
Opensslが私の証明書を見つけることができるかどうか、また明示的に指定せずにこの証明書を受け入れるにはどうすればよいですか?
-CApath
または-CAfile
引数を渡さない場合、s_clientがデフォルトの証明書ストアをチェックしないという既知のOpenSSLバグがあります。 Ubuntu 14.04のOpenSSLは、このバグの影響を受けます。
バージョン:
ubuntu@puppetmaster:/etc/ssl$ openssl version
OpenSSL 1.0.1f 6 Jan 2014
`-ca:を渡さないと、デフォルトのストアを使用できません。
ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
今私は-CApath
としてnullを渡し、それは機能します:
ubuntu@puppetmaster:/etc/ssl$ openssl s_client -quiet -connect gmail.com:443 -CApath /dev/null
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = mail.google.com
verify return:1
残念ながら、影響を受けるOpenSSLバージョンのリストは存在しないと思います。知る唯一の方法はそれをテストすることです。