Perché Chrome e Firefox riportano un certificato server e un emittente diversi da OpenSSL?

11

Quando visito https://somesite.org utilizzando Chrome o Firefox e ispeziono il certificato del server, mi sembra tutto a posto.

Vedo certificato server SSL, CN, O, OU che sembra corrispondere a somesite.org rilasciato da thawte SSL CA - G2.

Ma (e qui svelo che sono nuovo a questo) usando

openssl s_client -connect somesite.org:443 -showcerts

Ho qualcosa di molto diverso:

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

NOTA: OU = Somesite è in disaccordo con 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-------

Se estraggo il certificato e lo elaboro con

openssl x509 -in abnote.pem -text

Ottengo un risultato che conferma s_client risultato.

    
posta philcolbourn 20.07.2018 - 14:00
fonte

2 risposte

17

Non sono sicuro per il tuo caso d'uso esatto, ma questo è ciò che l' Indicazione del nome del server l'indirizzo TLS indica con precisione.

In HTTPS, l'handshake SSL in cui il server presenta il certificato si verifica prima che il server possa esaminare qualsiasi intestazione HTTP. SNI consente al client di inviare il nome del dominio virtuale come parte della negoziazione TLS. Ciò consente al server di selezionare un certificato tra molti. Pertanto, con client e server che implementano SNI, un server con un singolo indirizzo IP può servire nomi di dominio diversi con certificati diversi.

SNI è stato aggiunto alle RFC Internet di IETF nel giugno 2003 tramite RFC 3546, TLS (Transport Layer Security). L'ultima versione dello standard è RFC 6066.

Ora è lo standard de facto, perché nei grandi datacenter i proxy frontali possono servire centinaia o migliaia di siti, non parlando di Content Delivery Networks come Akamai o CloudFront (grazie a Mike Ounsworth per quella parte)

Ulteriori dettagli sulla pagina di riferimento.

BTW, openssl può usare SNI con l'opzione servername:

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

dovrebbe essere sufficiente per ottenere gli stessi certificati di quelli ottenuti dai browser

    
risposta data 20.07.2018 - 14:36
fonte
-1

Se ti trovi sulla rete della tua azienda, scuola o altra organizzazione, il tuo browser potrebbe essere configurato per utilizzare un server proxy web. Cercalo nel tuo browser o nelle impostazioni di rete del sistema.

Se il browser utilizza un proxy ma s_client non lo è, s_client può finire in un sito interno che ti dice di configurare il proxy e quel sito non avrà il certificato previsto.

Questa risposta spiega come usare un proxy con s_client : openssl s_client utilizzando un proxy .

    
risposta data 20.07.2018 - 21:00
fonte

Leggi altre domande sui tag