J'essaie
$ openssl s_client -connect www.google.com:443
mais cela se plaint d'OpenSSL que la chaîne du certificat est invalide:
$ openssl s_client -connect www.google.com:443
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
Pourquoi cela arrive-t-il? Le certificat de racine Equifax est dans mon répertoire/etc/ssl/certs, et si je télécharge la chaîne et utilisez verify
_, OpenSSL vérifiera la chaîne.
$ uname -a
Linux moxie 3.13.0-74-generic #118-Ubuntu SMP Thu Dec 17 22:52:02 UTC 2015 i686 i686 i686 GNU/Linux
$ openssl version
OpenSSL 1.0.1f 6 Jan 2014
$ openssl version -d
OPENSSLDIR: "/usr/lib/ssl"
Au OpenSSL 1.0.1f
$ openssl version
OpenSSL 1.0.1f 6 Jan 2014
$ openssl s_client -connect www.google.com:443
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Au OpenSSL 1.0.2e
$ openssl version
OpenSSL 1.0.2e 3 Dec 2015
$ openssl s_client -connect www.google.com:443
CONNECTED(00000003)
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 = www.google.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
On dirait qu'il y a un changement de comportement de la version que vous avez. Vous pouvez spécifier le capath explicitement ou passer à une version plus récente.
Vous devez spécifier explicitement le chemin CA-Chemin (au moins sur Ubuntu):
openssl s_client -connect www.google.com:443 -CApath /etc/ssl/certs/
Vous devez lire votre message d'erreur, il y a une réponse:
unable to get local issuer certificate
le mot magique est local. Pointez-les au dossier où vos certs SSL racine vivent, comme ça:
i# openssl s_client -verify on -CApath /etc/ssl/certs -connect www.google.com:443
verify depth is 0
CONNECTED(00000003)
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 = google.com
---- snip ---
verify return:1
Start Time: 1458160977
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
^C