2013-04-03 5 views
22

Ho letto un po 'sui certificati SSL, e in particolare ho letto che un certificato SSL "richiede un indirizzo IP dedicato". Ora, non sono sicuro del significato di questo; significa che il certificato richiede un indirizzo IP dedicato separato dall'indirizzo IP utilizzato per le normali comunicazioni HTTP, o semplicemente che non può condividere l'indirizzo IP con altri certificati SSL?Che cosa significa esattamente "ogni certificato SSL richiede un IP dedicato"?

Per chiarire, ho un VPS con un indirizzo IP dedicato. Il VPS ospita diversi siti diversi, compresi diversi sottodomini del sito principale, ma solo il sito principale ei sottodomini richiedono SSL. Posso semplicemente acquistare un certificato SSL per * .example.com usando il mio attuale indirizzo IP o devo averne uno separato dagli altri siti sul VPS? O ancora peggio, devo averne uno separato da tutto il traffico HTTP sul server? Tieni presente che nessuno degli altri siti ha bisogno di SSL.

Grazie per qualsiasi chiarimento sull'argomento.


Edit: Alcune fonti per le mie preoccupazioni:

http://symbiosis.bytemark.co.uk/docs/symbiosis.html#ch-ssl-hosting

Is it necessary to have dedicated IP Address to install SSL certificate?

risposta

34
  1. Non esiste un "certificato SSL". Il termine è fuorviante. X.509 certificati possono essere emessi per scopi diversi (come definito dalle loro "Utilizzo" di Utilizzo chiavi e Utilizzo chiave esteso), in particolare per la protezione di sessioni SSL/TLS.

  2. I certificati non richiedono nulla per quanto riguarda prese, indirizzi e porte in quanto i certificati sono dati puri.

  3. Quando si fissa una connessione con TLS, di solito si utilizza il certificato per autenticare il server (e talvolta il client). C'è un server per IP/Port, quindi di solito non c'è alcun problema per il server di scegliere quale certificato utilizzare.

    HTTPS è l'eccezione — diversi nomi di dominio diversi possono fare riferimento a un IP e il client (in genere un browser) si connette allo stesso server per diversi nomi di dominio. Il nome di dominio viene passato al server nella richiesta, che diventa dopo l'handshake TLS.

    Ecco dove si presenta il problema: il server Web non sa quale certificato presentare. Per risolvere questo problema è stata aggiunta una nuova estensione a TLS, denominata SNI (Server Name Indication). Tuttavia, non tutti i client lo supportano. Quindi, in generale, è una buona idea avere un server dedicato per IP/Port per dominio. In altre parole, ogni dominio, a cui il client può connettersi tramite HTTPS, dovrebbe avere il proprio indirizzo IP (o porta diversa, ma non è normale).

+1

Attendi, [SNI è ampiamente supportato a destra] (http://stackoverflow.com/a/6106500/632951)? Perché ogni dominio ha bisogno del proprio IP? – Pacerier

+1

@Pacerier No, SNI non è ampiamente supportato come sembra. In realtà fino al 2014 TLS 1.1 non era ampiamente supportato, con molti server che utilizzavano vecchie versioni di OpenSSL che si arrestavano appena quando la richiesta includeva TLS 1.1 o 1.2. Anche la risposta a cui si fa riferimento cita il supporto del browser e dimentica che esistono molti client HTTPS che non sono browser (i browser IIRC sono la minoranza di tutti i client HTTPS). Infine, se leggi la mia risposta, ho scritto "non tutti i client lo supportano". Se non ti interessa la compatibilità - nessun problema. –

+0

Hai dichiarato che SNI è per risolvere il problema che * "il server web non sa quale certificato presentare" *. Questo non significa che SNI deve essere inviato ** prima ** all'handshake TLS invece che dopo? – Pacerier

0

il certificato SSL nome commmon deve corrispondere al nome di dominio. Non hai alcun requisito sull'indirizzo IP, a meno che non si tratti di una limitazione imposta dal fornitore di certificati o dal software del server http.

Edit: esaminando il web, sembra che la voce si è diffusa a causa plug-in SSL di Apache non ha (almeno non ha avuto nel 2002) alcun meccanismo per usare certificato diverso in base al nome host . In tale scenario, è necessario eseguire due diversi server Web Apache sui due diversi indirizzi IP.

In ogni caso nella configurazione non si dovrebbe avere alcun problema usando un solo IP perché non si devono usare due certificati diversi (perché si prevede di utilizzare un certificato jolly).

Proverei comunque a configurare il server Web con un certificato autofirmato prima di spendere soldi per un secondo ip o certificato.

Edit 2: riferimento documentazione di Apache:

http://httpd.apache.org/docs/2.2/vhosts/name-based.html

Sembra che la società (apache> = 2.2.12) è supportato

5

certificati SSL non richiedono un indirizzo IP dedicato . I certificati SSL memorizzano un cosiddetto nome comune . Il browser interpreta questo nome comune come il nome DNS del server con cui sta parlando. Se il nome comune non corrisponde al nome DNS del server con cui sta parlando il browser, il browser invierà un avviso.

È possibile ottenere un cosiddetto certificato jolly , che sarebbe ammissibile per tutti gli host all'interno di un determinato dominio.

3

... seguito alle @ risposta di Eugenio con maggiori informazioni sul problema di compatibilità ...

Secondo this page from namecheap.com SNI non funziona su:

  • Windows XP + qualsiasi versione Internet Explorer (6,7,8,9)
  • Internet Explorer 6 o precedente
  • Safari su Windows XP
  • BlackBerry Browser
  • Windows Mobile fino a 6,5 ​​
  • Nokia Browser per Symbian almeno Series60
  • Opera Mobile per Symbian almeno Series60

sito Web sarà ancora disponibile tramite HTTPS, ma un apparirà errore di disallineamento del certificato.

Così, mentre entriamo 2016 Mi permetto di attaccare il mio collo là fuori e dire: "Se si sta costruendo un sito web moderno comunque (che non supportano i vecchi browser), e se il progetto è così piccolo che non posso permettermi un indirizzo IP dedicato, probabilmente starai bene affidandoti a SNI. " Certamente, ci sono migliaia di esperti che non sarebbero d'accordo, ma stiamo parlando di , non perfetto.

Problemi correlati