Plusieurs domaines avec SSL sur la même IP

Réponses:

28

Je pense que c'est une bonne idée comment expliquer le vrai problème avec les hôtes virtuels et SSL / TLS.

Lorsque vous vous connectez à un serveur apache via HTTP, vous envoyez un ensemble d'en-têtes http. Ils ressemblent à ceci:

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

Si vous disposez d'un hébergement virtuel, Apache examinera le champ des hôtes, puis récupérez le bon index.html pour vous. Le problème est lorsque vous ajoutez SSL / TLS. Le serveur configure le cryptage avant d'envoyer votre demande http. Par conséquent, le serveur ne sait pas si vous allez sur www.nice-puppies.com ou www.evil-haxxor.com tant que l'authentification / le cryptage n'est pas terminé. Le serveur ne peut pas deviner (car l'envoi du mauvais certificat vous donne un mauvais message d'erreur).

Une solution est un certificat générique (comme mentionné ci-dessus), qui est valable pour * .nice-puppies.com. De cette façon, vous pouvez utiliser le même certificat pour plusieurs domaines, mais vous ne pouvez pas avoir un certificat * .com (d'accord, vous pouvez, mais ce serait très mauvais pour tout le monde), donc en général, vous aurez besoin d'une IP distincte pour chacun Domaine HTTPS.

pehrs
la source
4
Bonne explication, mais vous pourriez avoir un certificat UC qui autoriserait plusieurs domaines dans un certificat
Sam Cogan
1
Oui, vous pouvez avoir des certificats de communications unifiées (certificats UCC / UC). J'aurais probablement dû les mentionner. Pour autant que je sache, ils sont principalement utilisés avec Exchange / Office Communication Server. Et si vous utilisez le même certificat pour différents sites, vous abusez de la sémantique x509. Mais ils fonctionnent sur la plupart des piles TLS.
pehrs
6
Aussi SNI. Votre déclaration n'est plus définitive, pehrs. Votre explication est historiquement exacte mais ne reflète plus les technologies actuelles.
Warner
4
SNI ne fonctionne pas (encore?) Avec IE6 sous Windows XP. Quel type de limite de valeur, compte tenu de la part de marché. Je crois que l'utilisateur d'origine était plus intéressé par ce qui se passerait que l'ensemble des hacks qui existent pour le contourner.
pehrs
J'ai essayé de corriger l'erreur d'orthographe à la fin de SHTTP en HTTPS mais cela a été rejeté comme une modification trop petite.
Stuart
8

La vraie solution à ce problème est "Indication du nom du serveur":

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

Cela ne fait que commencer à être déployé sur les serveurs et les clients Web, donc ce n'est pas vraiment quelque chose que vous pouvez utiliser maintenant, mais j'espère que dans quelques années, ce ne sera pas un problème aussi important.


la source
2

Le problème est que le certificat SSL est lié à l'adresse IP et non au nom d'hôte. Lorsque la connexion entre sur l'adresse IP d'une demande HTTPS, la première action consiste à établir la communication SSL en transmettant le certificat de serveur et / ou le certificat client. Au cours de cette étape de l'établissement de la connexion, le serveur Apache n'a aucun moyen de savoir à quoi sert la demande sur le point de passer. Ceci est différent pour le trafic HTTP (non SSL) car une fois la connexion établie, le serveur Apache peut déterminer la configuration de l'hôte virtuel à utiliser si le client envoie l'en- Hosttête ou bien il le remet au premier hôte virtuel configuré.

Si vous aviez plusieurs hôtes virtuels sous le même domaine, vous pourriez configurer un seul certificat générique sur l'adresse IP et avoir plusieurs hôtes virtuels avec différents noms de serveur définis; cependant, si ces noms de serveur ne sont pas sous le même nom de domaine, ils généreraient des erreurs de serveur client. Cela fonctionnerait car le certificat générique serait valide pour tous les noms d'hôte sous ce nom de domaine. Vous auriez besoin d'une autre adresse IP si les noms de domaine étaient différents car le premier certificat défini pour cette adresse IP serait celui présenté pour la connexion des clients.

Jeremy Bouse
la source
1

Cela peut être ajouté dans un seul certificat SSL comme SAN (Subject Alternative Name). Dans mon expérience, j'ai dû demander un certificat sll d'organisation. j'ai utilisé globalsign.


la source
1

En fait, avec un logiciel moderne, vous POUVEZ servir plusieurs sites HTTPS sur une seule adresse IP, en utilisant une nouvelle fonctionnalité appelée «SNI - Server Name Indication».

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

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

Je n'ai pas encore utilisé cela moi-même, mais cela semble bon pour les sites internes et intranet. La plupart des navigateurs modernes prennent en charge SNI. IE6 ne prend pas en charge SNI, mais IE7 le fait.

(Correction: 20100426 - SNI n'est pas du tout pris en charge sur Windows XP. Windows Vista et versions ultérieures prennent en charge SNI. Voir «Section 2.2.3» sur http://msdn.microsoft.com/en-us/library/dd208005% 28v = PROT.13% 29.aspx # id8 ).

Stefan Lasiewski
la source
2
Avec IE, le support ne vient pas de la version IE, mais plutôt de la version sous-jacente du système d'exploitation. Vista et supérieur prennent en charge SNI. XP ne fonctionne pas, donc même avec IE8 sur XP, vous n'obtiendrez pas SNI.
Nasko
1

Je travaille sur le même problème. Comme test, IE7 et versions ultérieures (uniquement sous Win7 et Vista) / Chrome / Firefox / Safari / Opera prennent en charge "Server Name Indication". En fait, si le navigateur utilise Tsl 1.0, il prend en charge "Indication du nom du serveur".

Sean
la source
0

Je pense que l'OP demande ce qui se passe s'il ajoute un certificat SSL à une IP qui a de nombreux hôtes virtuels. Si aucun des autres hôtes virtuels n'utilise un certificat SSL, il doit être en clair.

Iraklis
la source
eh bien je suis perplexe par la question. Le titre du Q indique noir le contenu indique blanc.
Iraklis
c'est le blanc
Iraklis
0

Si vous essayez d'ajouter deux certificats sur la même IP, seul le premier certificat lu sera utilisé partout. Un IP - un certificat SSL.

Si vous souhaitez obtenir plus de certificats SSL sur la même IP, pensez à obtenir un certificat à domaines multiples (appelé UCC - consultez @ godaddy ) ou un certificat générique (plus cher).

Andrejs Cainikovs
la source
Vous voulez dire que le certificat ajouté pour la première fois dans Apache conf sera utilisé pour les deux?
nitines
1
Si vous avez deux certificats - pour le site A et B, et qu'apache charge la configuration des hôtes dans la séquence A.conf, puis B.conf, alors il utilisera le certificat de A.conf. Ou vice versa.
Andrejs Cainikovs