Se più hostname sono ospitati sullo stesso IP, non è semplice per consentire loro di supportare https. Quali sono le migliori opzioni in termini di supporto del browser e / o supporto del server web?
Da quello che ho visto "Indicazione del nome del server" è il modo principale per raggiungere questo obiettivo al momento.
Uno dei lati negativi è che i browser più vecchi non lo supportano, quindi a seconda del sito potrebbe non essere possibile utilizzarlo.
Modifica: solo per aggiornare i seguenti commenti di @ D.W. e @ Piskvor sembra che ci sia ora un elenco di browser supportati e non supportati nella pagina Wikipedia collegata.
Tutti i browser più diffusi supportano SNI, incluse tutte le versioni di Internet Explorer su Windows Vista e versioni successive. Internet Explorer 6, 7 e 8 su Windows XP erano i principali browser che non supportavano SNI, ma non ricevono più aggiornamenti di sicurezza da aprile 2014.
Ci sono due modi: o tutti i siti usano lo stesso certificato (nel qual caso hai bisogno di un modo per fare in modo che il browser client accetti il certificato indipendentemente dal sito che il cliente intendeva contattare), oppure selezioni il certificato corretto in base sul sito al quale il cliente desidera connettersi (nel qual caso è necessario ottenere tali informazioni in un modo o nell'altro).
Per la prima, prendi in considerazione RFC 2818 , che specifica cosa il browser si aspetta effettivamente dal certificato del server. Il browser desidera connettersi a un URL, che include una parte del nome del server (dopo https://
ma prima del prossimo /
); il browser vuole trovare quel nome nel certificato del server. I dettagli sono nella sezione 3.1. In sostanza, l'estensione del nome alt soggetto nel certificato viene scansionata per i nomi di tipo dNSName
, e uno di essi deve corrispondere al nome del server nell'URL. Se l'estensione del nome dell'estensione del soggetto non contiene affatto dNSName
, se non è presente un'estensione del nome dell'estensione per il soggetto nel certificato del server, viene utilizzato il nome comune in subjectDN
. Il carattere jolly " *
" può essere utilizzato per abbinare "qualsiasi" parte del nome, ma questo non è supportato in modo affidabile da ogni browser.
Pertanto, per supportare più siti sullo stesso IP e sulla stessa porta, utilizzare un certificato che elenca tutti i nomi dei siti in un'estensione del nome alt soggetto. Questo ha alcuni inconvenienti, ad es. rivela tutti i nomi dei siti (è sufficiente connettersi e guardare il certificato); inoltre, è necessario ottenere un nuovo certificato ogni volta che si aggiunge un nuovo sito. Infine, il tuo fornitore di certificati potrebbe rendere le cose un po 'più difficili o costose (ad esempio i certificati gratuiti da StartSSL sono solo a dominio singolo; un certificato con più domini, devi pagare).
Il secondo modo riguarda l' Indicazione del nome del server , che è un'estensione di SSL. Quando si utilizza questa estensione, il client annuncia il nome del server previsto abbastanza presto nell'handshake, in modo che il server possa scegliere quale certificato utilizzare a seconda del sito con cui il client desidera parlare. Sfortunatamente, il supporto per SNI non è disponibile con Internet Explorer su Windows XP, una combinazione ancora comune (in base alle statistiche globali StatCounter , a partire da ottobre 2012, ci sono ancora oltre il 12% di utenti Web che utilizzano IE 8.0, presumibilmente molti di loro su WinXP - si noti che dal momento che la condivisione WinXP è il 27% del sistema operativo, si può concludere che più della metà degli utenti di WinXP hanno passato a un browser non IE). Abbandona il 12% del pubblico potenziale del sito è una decisione politica non banale.
Inoltre, con SNI, il software server deve supportarlo ed essere configurato per usarlo. Vedi questa pagina per come farlo con Apache e mod_ssl.
Un'altra opzione è utilizzare un certificato SSL con caratteri jolly se i nomi host lo consentono.
Quindi avrai un certificato con CN = *. Yourdomain.com che copre www.yourdomain.com, mail.yourdomain.com, ftp.yourdomain.com e così via.
Per quanto ne so, per la maggior parte dei server web, se devi avere nomi host diversi e devono essere sullo stesso IP (meglio andare per gli IP virtuali, ma lasciamolo), dovrai usare diversi porti.
Per esempio. 443, 444, 445, ecc.
Non sempre così intuitivo per l'utente, anche se ...
Potresti prendere in considerazione Subject Alternative Names
, poiché sono più flessibili di Server Name Indication
(e potrebbero funzionare con i browser più vecchi!). Le SAN consentono di utilizzare un singolo certificato per fino a 25 nomi DNS o più a seconda di chi si acquista la SAN. Ogni dominio può avere un dominio TLD diverso (dominio di primo livello) come .com, .org, ecc.
Anche i certificati con caratteri jolly potrebbero funzionare, ma devono avere due elementi comuni nella parte superiore (* .example.com). Tuttavia è probabile che perderà la maggior parte dell'assicurazione e-commerce del fornitore con questi tipi di certificati; e non credo sia possibile ottenere un certificato EV di questo tipo.