Più domini con SSL sullo stesso IP


Risposte:


28

Penso che sia una buona idea come spiegare quale sia il problema con gli host virtuali e SSL / TLS.

Quando ti connetti a un server Apache su HTTP, invii una serie di intestazioni http. Sembrano così:

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

Se hai l'hosting virtuale apache guarderà il campo hosts, quindi procurati il ​​index.html giusto per te. Il problema è quando si aggiunge SSL / TLS. Il server imposta la crittografia prima di inviare la tua richiesta http. Pertanto il server non sa se si sta visitando www.nice-puppies.com o www.evil-haxxor.com fino al completamento dell'autenticazione / crittografia. Il server non può indovinare (poiché l'invio del certificato errato ti dà un brutto messaggio di errore).

Una soluzione è un certificato jolly (come menzionato sopra), che è valido per * .nice-puppies.com. In questo modo puoi usare lo stesso certificato per più domini, ma non puoi avere un certificato * .com (okay, puoi, ma sarebbe molto male per tutti gli altri), quindi in generale avrai bisogno di un IP separato per ogni Dominio HTTPS.


4
Buona spiegazione, ma potresti avere un certificato UC che consentirà più domini in un certificato
Sam Cogan,

1
Sì, puoi avere certificati di comunicazioni unificate (certificati UCC / UC). Probabilmente avrei dovuto menzionarli. Sono, per quanto ho visto, utilizzati principalmente con Exchange / Office Communication Server. E se usi lo stesso certificato per siti diversi, abusi della semantica x509. Ma funzionano sulla maggior parte degli stack TLS.
sabato

6
Anche SNI. La tua affermazione non è più definitiva, pehrs. La tua spiegazione è storicamente accurata ma non riflette più le tecnologie attuali.
Warner,

4
SNI non funziona (ancora?) Con IE6 su Windows XP. Che tipo di limiti il ​​valore, considerando la quota di mercato. Credo che l'utente originale fosse più interessato a ciò che sarebbe accaduto rispetto al set di hack che esiste per aggirarlo.
pehrs,

Ho cercato di correggere l'errore di ortografia alla fine da SHTTP a HTTPS ma questo è stato rifiutato come modifica troppo piccola.
Stuart,

8

La vera soluzione a questo problema è "Indicazione nome server":

http://en.wikipedia.org/wiki/Server_Name_Indication

Sta solo iniziando a essere implementato in server e client Web, quindi non è davvero qualcosa che puoi usare ora, ma speriamo che tra qualche anno non sia un grosso problema.


2

Il problema è che il certificato SSL è associato all'indirizzo IP e non al nome host. Quando la connessione arriva sull'indirizzo IP per una richiesta HTTPS, la prima azione è stabilire la comunicazione SSL passando il certificato del server e / o il certificato client. Durante questa fase dell'handshake della connessione, il server Apache non ha modo di sapere a cosa serve la richiesta. Ciò è diverso per il traffico HTTP (non SSL) poiché dopo aver stabilito la connessione, il server Apache può determinare la configurazione dell'host virtuale da utilizzare se il client invia l' Hostintestazione oppure lo trasferisce al primo host virtuale configurato.

Se si disponessero di più host virtuali nello stesso dominio, è possibile impostare un singolo certificato jolly sull'indirizzo IP e disporre di più host virtuali con nomi di server diversi definiti; tuttavia, se tali nomi di server non hanno lo stesso nome di dominio, genererebbero errori del server client. Ciò funzionerebbe poiché il certificato con caratteri jolly sarebbe valido per tutti i nomi host con quel nome di dominio. Avresti bisogno di un altro indirizzo IP se i nomi di dominio fossero diversi poiché il primo certificato definito per quell'indirizzo IP sarebbe quello presentato per i client di connessione.


1

Questo può essere aggiunto in un singolo certificato SSL come SAN (soggetto nome alternativo). Nella mia esperienza ho dovuto richiedere un certificato di organizzazione aziendale. ho usato globalsign.


1

In realtà, con i moderni software PUOI servire più siti HTTPS su un singolo indirizzo IP, usando una nuova funzionalità chiamata "SNI - Indicazione del nome del server".

http://en.wikipedia.org/wiki/Server_Name_Indication

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Devo ancora usarlo da solo, ma suona bene per i siti interni e intranet. I browser più moderni supportano SNI. IE6 non supporta SNI, ma IE7 sì.

(Correzione: 20100426 - SNI non è affatto supportato su Windows XP. Windows Vista e versioni successive supportano SNI. Vedere "Sezione 2.2.3" su http://msdn.microsoft.com/en-us/library/dd208005% 28v = PROT.13% 29.aspx # id8 ).


2
Con IE, il supporto non proviene dalla versione IE, ma piuttosto dalla versione del sistema operativo sottostante. Vista e versioni successive supportano SNI. XP no, quindi anche con IE8 su XP, non otterrai SNI.
Nasko,

1

Sto lavorando allo stesso problema. Come mio test, IE7 e versioni successive (solo in Win7 e Vista) / Chrome / Firefox / Safari / Opera supportano "Indicazione nome server". Infatti, se il browser utilizza Tsl 1.0, supporta "Indicazione nome server".


0

Penso che l'OP chieda cosa succede se aggiunge un certificato SSL a un IP che ha molti host virtuali. Se nessuno degli altri host virtuali utilizza un certificato SSL, dovrebbe essere in chiaro.


bene sono perplesso dalla domanda. Il titolo della Q dice nero il contenuto dice bianco.
Iraklis,

questo è quello bianco
Iraklis,


0

Se proverai ad aggiungere due certificati sullo stesso IP, solo il certificato di prima lettura verrà utilizzato ovunque. Un IP - un certificato SSL.

Se vuoi ottenere più certificati SSL sullo stesso IP, prendi in considerazione la possibilità di ottenere certificati multi-dominio (il cosiddetto UCC - check it out @ godaddy ) o jolly (più costoso).


Vuoi dire che il certificato aggiunto per la prima volta in Apache conf verrà utilizzato per entrambi?
nitin,

1
Se hai due certificati - per il sito A e B e apache carica la configurazione per gli host nella sequenza A.conf, quindi B.conf, utilizzerà il certificato di A.conf. O vice versa.
Andrejs Cainikovs,
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.