web-dev-qa-db-fra.com

Pourquoi Chrome et Firefox signalent-ils un certificat de serveur et un émetteur différents d'OpenSSL?

Quand je visite https://somesite.org en utilisant Chrome ou Firefox et inspectez le certificat du serveur, tout me semble OK.

Je vois un certificat de serveur SSL, CN, O, OU qui semble correspondre à somesite.org émis par thawte SSL CA - G2.

Mais (et ici je révèle que je suis nouveau dans ce domaine) en utilisant

openssl s_client -connect somesite.org:443 -showcerts

Je reçois quelque chose de très différent:

depth=0 C = XX, ST = XXX, L = Strawberry Hills, O = Department
of Misadventure and Zebras, OU = Somesite, CN = www.domz.gov
verify error:num=20:unable to get local issuer certificate
verify return:1

REMARQUE: OU = Somesite est en contradiction avec Dept. of Misadventure and Zebras.

Certificate chain 0 s:/C=XX/ST=XXX/L=Strawberry Hills/O=Department of Misadventure and Zebras/OU=Somesite/CN=www.domz.gov i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-------

Si j'extrais le certificat et le traite avec

openssl x509 -in abnote.pem -text

J'obtiens un résultat qui confirme s_client résultat.

11
philcolbourn

Je ne suis pas sûr de votre cas d'utilisation exact, mais c'est précisément ce que l'extension Indication du nom du serveur TLS adresse.

Dans HTTPS, la négociation SSL où le serveur présente son certificat se produit avant que le serveur ne puisse examiner un en-tête HTTP. SNI permet au client d'envoyer le nom du domaine virtuel dans le cadre de la négociation TLS, ce qui permet au serveur de sélectionner un certificat parmi plusieurs. Par conséquent, avec des clients et des serveurs qui implémentent SNI, un serveur avec une seule adresse IP peut servir différents noms de domaine avec différents certificats.

SNI a été ajouté aux RFC Internet de l'IETF en juin 2003 via la RFC 3546, Extensions TLS (Transport Layer Security). La dernière version de la norme est RFC 6066.

C'est désormais la norme de facto, car dans les grands centres de données, les proxys frontaux peuvent desservir des centaines ou des milliers de sites, sans parler des réseaux de diffusion de contenu comme Akamai ou CloudFront (merci à Mike Ounsworth pour cette partie)

Plus de détails sur la page référencée.


BTW, openssl peut utiliser SNI avec l'option servername:

openssl s_client -connect somesite.org:443 -servername somesite.org -showcerts

devrait être suffisant pour obtenir les mêmes certificats que les navigateurs

17
Serge Ballesta