web-dev-qa-db-ja.com

opensslに-CAfileで指定せずに証明書を使用させる方法

私はこのコマンドを使用しています:

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が私の証明書を見つけることができるかどうか、また明示的に指定せずにこの証明書を受け入れるにはどうすればよいですか?

3
Ben Flynn

-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バージョンのリストは存在しないと思います。知る唯一の方法はそれをテストすることです。

3
Antonius Bloch