OpenSSL restituisce un certificato SSL diverso da quello mostrato da Chrome


13

Quando si esegue una query sull'URL CDN di Sparkfun utilizzando OpenSSL con il seguente comando:

openssl s_client -showcerts -connect dlnmh9ip6v2uc.cloudfront.net:443

Il nome comune restituito nel certificato è *.sparkfun.com, che non riesce a verificare, ma se si carica l'host in Chrome, il nome comune visualizzato è*.cloudfront.net

Cosa sta succedendo qui?

Questo sta causando un problema perché l'ambiente in cui mi trovo è proxy SSL tramite Squid SSL_Bump, che genera un certificato firmato dalla mia autorità di certificazione locale attendibile per il dominio. Questo funziona per tutti i domini ma quanto sopra, poiché la CN non corrisponde poiché il nuovo certificato viene generato usando OpenSSL.

EDIT - Ho verificato che lo stesso si verifichi con OpenSSL su un server in un centro dati remoto che ha una connessione diretta a Internet senza proxy o filtri coinvolti.

EDIT - Il problema è dovuto a SNI, come accettato, ma per compilare le informazioni sul motivo per cui causa un problema con Squid e SSL_Bump:

Questo progetto non supporterà l'inoltro delle informazioni sull'indicazione del nome del server SSL (SNI) al server di origine e renderà un po 'più difficile tale supporto. Tuttavia, l'inoltro SNI ha le sue serie sfide (al di là dell'ambito di questo documento) che superano di gran lunga le ulteriori difficoltà di inoltro.

Tratto da: http://wiki.squid-cache.org/Features/BumpSslServerFirst

Risposte:


23

CloudFront utilizza SNI, un modo per poter utilizzare più certificati su un singolo IP. Tutti i browser moderni lo supportano, così come il comando s_client di openssl, ma s_client non lo fa magicamente. Devi dirlo per usarlo:

openssl s_client -servername dlnmh9ip6v2uc.cloudfront.net  -connect dlnmh9ip6v2uc.cloudfront.net:443 -showcerts

2
Yaaay Dennis, questo è il mio " oooh, non lo sapevo " selezionato per SF oggi, e non sono ancora le 9! +1 da me.
MadHatter,

9

Chrome supporta SNI , indicando al server quale certificato inviare. Il s_clientcomando no.

Ci sono maggiori dettagli sull'uso di SNI di CloudFront qui .

Quando usi SSL personalizzato SNI, alcuni utenti potrebbero non essere in grado di accedere ai tuoi contenuti perché alcuni browser meno recenti non supportano SNI e non saranno in grado di stabilire una connessione con CloudFront per caricare la versione HTTPS dei tuoi contenuti. Per ulteriori informazioni su SNI, incluso un elenco di browser supportati, visitare la nostra pagina FAQ .

e:

SSL personalizzato SNI si basa sull'estensione SNI del protocollo Transport Layer Security, che consente a più domini di servire il traffico SSL sullo stesso indirizzo IP includendo i visualizzatori dei nomi host a cui stanno tentando di connettersi. Come con SSL personalizzato IP dedicato, CloudFront fornisce contenuti da ogni posizione periferica di Amazon CloudFront e con la stessa sicurezza della funzione SSL personalizzato IP dedicato. SSL personalizzato SNI funziona con la maggior parte dei browser moderni, tra cui Chrome versione 6 e successive (in esecuzione su Windows XP e successive o OS X 10.5.7 e successive), Safari versione 3 e successive (in esecuzione su Windows Vista e successive o Mac OS X 10.5. 6. e versioni successive), Firefox 2.0 e versioni successive e Internet Explorer 7 e versioni successive (in esecuzione su Windows Vista e versioni successive). I browser meno recenti che non supportano SNI non possono stabilire una connessione con CloudFront per caricare la versione HTTPS del contenuto.


s_client supporta SNI bene ...
Dennis Kaarsemaker

+1 da me comunque, grazie all'eccellente documentazione mostrata.
MadHatter,

Non ho detto s_clientche non supportava la CLI. Ho detto che il s_clientcomando (nell'OP) no.
David Schwartz,

@DavidSchwartz - In realtà il mio client OpenSSL supporta SNI e posso verificare utilizzando le informazioni descritte qui.
Geoffrey,

@Geoffrey sono d'accordo. È il comando nell'OP che non supporta SNI.
David Schwartz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.