2013-09-28 2 views
10

J'ai un serveur Debian qui exécute un certain nombre de sites clients. La plupart d'entre eux n'exécutant pas SSL, l'accès par HTTP est correct.Plusieurs sites par serveur Apache avec SSL affichant un mauvais site avec HTTPS

J'ai un client avec un certificat SSL et l'accès à leur site via HTTPS est bien aussi. Le problème vient si vous essayez d'accéder à l'un des autres sites avec HTTPS vous êtes dirigé vers l'autre site qui a le certificat SSL.

Par exemple, permet de dire que nous avons les sites suivants sur le serveur:

alpha.net 
bravo.net 
charlie.net (SSL) 
delta.net 

Comme vous pouvez le voir, charlie est le seul avec SSL, et quel que soit si vous allez à http charlie.net ou https charlie.net, ça marche bien.

http à tous les autres sites est très bien, mais si vous deviez aller à https alpha.net, il va initialement venir avec une erreur de certificat invalide et vous laisser continuer, mais alors qu'il a alpha.net dans la barre d'adresse , c'est effectivement montrer le site charlie.net dans le navigateur. J'ai fait des recherches sur SNI et comment si d'autres sites ont SSL, je vais devoir les mettre tous sur des adresses IP spécifiques (quelque chose d'autre que j'ai besoin d'essayer de faire, car je n'ai aucune idée), mais je suis Je ne sais pas pourquoi cela se passe ou comment je le résous.

Est-ce que quelqu'un d'autre a déjà rencontré cela et comment l'avez-vous contourné?

Un grand merci,

Rob

+0

J'ai étudié encore plus loin et j'ai découvert que c'est parce que le seul fichier de configuration de site apache, y compris 443 est charlie.net. Comme c'est le seul à l'inclure, même si vous essayez d'aller à https et l'un des autres domaines, vous allez à charlie.net parce que c'est le seul avec https. Cela a donc un sens parfait.Ce que je ne sais pas comment faire maintenant est de configurer 443 et lui donner une instruction https pour rediriger vers http parce qu'il n'y a pas de certificat. Donc, si quelqu'un sait comment faire cela, je l'apprécierais. – Rob

+1

joon a remarqué le même problème sur Webmasters SE: ["https: //" fait référence au site aléatoire, "http: //" est cassé, mais "http: // www" fonctionne] (http: //webmasters.stackexchange. com/q/55685/17633) – unor

Répondre

1

Si vous avez plusieurs adresses IP sur votre serveur, utilisez un unique pour le site SSL, tous les sites non-SSL partagent une autre IP. Puisque SSL ne se soucie pas du domaine que vous visitez, il se soucie uniquement si le domaine actuel est approuvé à partir de la liste des domaines (nom commun) qu'il reçoit de l'adresse Ip.

2

Cela n'a rien à voir avec SNI, car vous n'avez actuellement qu'un seul serveur HTTPS. Ce qui se passe, comme vous l'avez indiqué dans votre commentaire, c'est que le domaine alpha.net se résout à l'adresse IP de votre serveur. Votre serveur Apache est configuré pour écouter les demandes sur le port 443 sur cette adresse IP, et pour servir le contenu de charlie.net à ces demandes. (Et l'erreur de certificat signifie que le navigateur a remarqué la différence entre le nom de domaine présumé du certificat et le nom de domaine utilisé pour la demande.)

Rediriger de HTTPS vers HTTP est probablement plus de problèmes que cela en vaut la peine, car vous auriez besoin de valider certificats pour chaque domaine, de peur de présenter à vos utilisateurs un autre avertissement de sécurité. Cela impliquerait la création d'hôtes virtuels pour alpha.net:443 et ainsi de suite, sur un serveur capable SNI (à savoir, les versions ultérieures d'Apache 2.2+ avec OpenSSL), et en ajoutant une redirection comme ceci:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

Probablement le Le plus simple pour votre problème est d'utiliser une adresse IP différente pour charlie.net. Avec cette configuration, alpha.net n'aurait aucun moyen d'afficher le contenu d'un autre site.

Questions connexes