Selezione del certificato SSL basato sull'intestazione host: è possibile?


17

È possibile che un server Web selezioni un certificato SSL da utilizzare in base all'intestazione host della connessione in entrata o tali informazioni sono disponibili solo dopo aver stabilito la connessione SSL?

Cioè, il mio server web può essere elencato sulla porta 443 e utilizzare il certificato foo.com se è richiesto https://foo.com e il certificato bar.com se è richiesto https://bar.com o sto cercando di farlo qualcosa di impossibile perché il server deve stabilire una connessione SSL prima di sapere cosa vuole il client?

Risposte:


23

Storicamente, la tua prima affermazione è accurata. Ora ci sono più opzioni:

  • Un certificato jolly se sottodomini all'interno dello stesso dominio.
  • Un certificato SAN / UCC per specificare nomi alternativi per il certificato, potendo così servire più certificati.
  • SNI è stato introdotto per stabilire la connessione SSL dopo l'intestazione Host. Questo ha un supporto limitato, tuttavia, poiché è più recente.

A me stesso e ad altri è stato risposto più volte su ServerFault. Suggerirei di cercare ulteriori dettagli a meno che tu non abbia una domanda specifica.


4
Sono andato a cercare e non sono riuscito a trovare nulla; questa è probabilmente una di quelle cose che è facile da cercare solo se conosci la risposta in modo da poterla includere nei termini di ricerca. Grazie.
— DrStalker,

3
Se ci sono risposte esistenti su ServerFault, sarebbe stato bello collegarle ad esse.
— Organicveggie,

serverfault.com/search , @organicveggie.
— Warner,

3
SNI non stabilisce la connessione SSL dopo l'intestazione Host, ma include il nome host nell'handshake SSL. Non importa se non sei uno sviluppatore SSL.
— Bart van Heukelom,

La ricerca di Serverfault fornisce questa come risposta. Ciò significa che canonicamente qualsiasi altra domanda è una copia di questa. Quel link che hai incluso non ha risultati.
— Ian Boyd,


3

Risposta breve: no

HTTP è incapsulato all'interno di SSL , quindi qualsiasi informazione sulla richiesta è inaccessibile fino a quando non viene stabilita la connessione. Quindi fino a quando un certificato è stato dato al cliente. Non è possibile utilizzare le intestazioni né altre informazioni crittografate, poiché non sono ancora disponibili.

EDIT: questo è vero se vuoi oggi essere cross-browser e completamente portatile. Come affermato da altri, ci sono alcuni nuovi metodi emergenti che lo renderanno possibile nel prossimo futuro.


1

o quelle informazioni sono disponibili solo dopo aver stabilito la connessione SSL?

Corretta. La connessione SSL viene stabilita prima di inviare qualsiasi parte della richiesta HTTP (intestazione host inclusa).


2
Questo non è più completamente accurato.
— Warner,
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.