Qual è la differenza tra i certificati SSL SAN e SNI?

Potrebbe qualcuno spiegare la differenza tra questi certificati in modo semplificato, ho letto alcuni articoli, ma suona che fanno lo stesso lavoro, crittando molti domini con un solo certificato.

  • Controllare la validità del certificato SSL, inclusa la catena CA, con Nagios
  • Problema con SSL e provider di hosting
  • convertire il tasto .p7b in un .pfx
  • Let's Encrypt - "Domanda DNS ... è stata temporaneata per cercare CAA per ..."
  • Catena del certificato con AWS ELB & GoDaddy Certs
  • SSL deve essere configurato all'equilibratore di carico esterno se si utilizza uno?
  • 4 Solutions collect form web for “Qual è la differenza tra i certificati SSL SAN e SNI?”

    SAN (Nome alternativo di sobject) fa parte della specifica del certificato X509 , in cui il certificato ha un field con un elenco di nomi alternativi validi anche per il sobject (oltre al singolo nome comune / CN). Questo nomi di field e wildcard sono essenzialmente i due modi per utilizzare un certificato per più nomi.

    SNI (Nome del server nome) è un'estensione del protocollo TLS che è un tipo di protocollo TLS equivalente dell'intestazione host HTTP. Quando un client invia questo, consente al server di scegliere il certificato appropriato da presentare al client senza avere la limitazione di utilizzare indirizzi IP separati sul lato server (molto simile a come l'intestazione HTTP Host è fortemente utilizzata per il HTTP normale).

    Bisogna notare che l'SNI non è qualcosa che si riflette nel certificato e realizza effettivamente il contrario di quello che chiede la domanda; semplifica di avere molti certificati, non utilizzare un certificato per molte cose.

    D'altra parte, dipende fortemente dalla situazione in cui il path è in realtà preferibile. Ad esempio, quello che chiede la domanda è quasi certamente non quello che vuoi se hai bisogno di certificati per entity framework; diverse.

    SAN è il nome alternativo di sobject , ed è una properties; del certificato x509 e SNI è una funzionalità che il client SSL / TLS può supportre, quindi un'entity framework; totalmente diversa.

    Utilizzando un certificato con SAN puoi ospitare più siti supportti da HTTPS su un indirizzo IP anche se il client non support l' SNI . In questo caso, si dispone di un certificato per tutti i tuoi siti e il certificato deve contenere tutti i nomi di sito ( ServerName o ServerAlias nelle coordinate apache o server_name in nginx) in quanto SAN . Questo è un sottoinsieme di un approccio legato, quello che ha esteso il "sito HTTPS-enabled su ciascun indirizzo IP separato". Attualmente solo i CDN di grandi size si attaccano con SAN .

    Utilizzando SNI è ansible anche ospitare più siti supportti da HTTPS in un unico indirizzo IP, in possesso di un certificato x509 separato per ciascun sito e nessuno dei quali elenca altri nomi di siti nella propria properties; SAN , ma i client TLS (es. Browser e client di console come wget o curl ) deve supportre SNI . Questo è un approccio moderno, visto che l'ultimo sistema operativo che non support SNI out-of-the-box era Windows XP con IE 6.x, se mi ricordo correttamente. Oggi è ansible vedere la properties; SAN se si acquista il certificato wildcard – ad esempio un certificato per *.foobar.com conterrà un nome comune di *.foobar.com e una SAN di foobar.com .

    Questo mescola due parti del process di certificazione.

    Una SAN è un nome alternativo di sobject. È un modo per creare un certificato per più domini. È sufficiente aggiungere gli altri domini che si desidera un certificato per il field SAN nel certificato. Il browser accetterà quindi la validità in questi domini.

    SNI è l'indicazione del nome del server e fa parte di SSL. Consente di ospitare più siti SSL in un singolo IP perché il nome del server desiderato viene inviato con la stretta di mano SSL e il server può scegliere il certificato corretto per la risposta.

    Qui una risposta (forse) più umana leggibile:

    SNI è condotto dal lato client e dice lo stack TLS "Voglio parlare con un server il cui nome è [Server X]". Il server vede questa string [Server X] e risponde con un certificato appropriato. Un esempio pratico è quando un singolo server deve servire traffico per più domini. È utile anche se il client ha utilizzato un IP (per evitare ritardi di ricerca DNS) ma il certificato CN non menziona l'IP.

    SAN è un elenco di "Conosciuto come" nei certificati. In questo modo il server può utilizzare un unico certificato per molti nomi. Si possono aggiungere molti domini allo stesso certificato e persino un elenco di IP.

    Come potete vedere, le cose si sovrappongono. La scelta tra uno o entrambi dipende da where si ha il controllo. Alcuni clienti potrebbero non riconoscere i nomi in SAN e l'unico modo per affrontare è quello di fornire un certificato appropriato basato su SNI. Ci sono scenari che il server fornisce API per un unico certificato o il client non invia SNI. Per questi casi, SAN è l'unica via d'output.

    La mia azienda fa uso di entrambi. Forniscono flessibilità e rendono più facile la compatibilità all'indietro e all'indietro.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.