2 votes

Comment puis-je empêcher Apache de servir un site HTTPS lorsqu'il ne correspond pas au nom de VirtualHost demandé?

Je suis en train d'utiliser Apache2 et des hôtes virtuels nommés pour servir deux domaines différents (exampleone.com et exampletwo.com) à partir d'une seule adresse IP. Un site (exampleone.com) devrait être en HTTP et HTTPS, tandis que l'autre (example2.com) devrait être en HTTP uniquement.

Jusqu'à présent, j'ai réussi à faire fonctionner leurs sites HTTP respectifs comme prévu, et j'ai réussi à faire fonctionner HTTPS pour le site concerné - cependant, lorsque je vais sur https://exampletwo.com, je suis servi du contenu et des avertissements de sécurité de https://exampleone.com.

Comment puis-je faire en sorte que les requêtes vers https://exampletwo.com soient rejetées ?

    ServerName exampleone.com
    ServerAlias *.exampleone.com
    DocumentRoot /var/www/exampleone.com

            Options MultiViews
            AllowOverride None
            Order allow,deny
            allow from all

    CustomLog /var/log/apache2/exampleone.log combined

    ServerName exampletwo.com
    ServerAlias *.exampletwo.com
    DocumentRoot /var/www/exampletwo.com

            Options MultiViews
            AllowOverride None
            Order allow,deny
            allow from all

    CustomLog /var/log/apache2/exampletwo.log combined

    ServerAdmin admin@exampleone.com
    ServerName exampleone.com
    ServerAlias *.exampleone.com

    DocumentRoot /var/www/exampleone.com

            Options MultiViews
            AllowOverride None
            Order allow,deny
            allow from all

    CustomLog /var/log/apache2/exampleone-ssl.log combined

    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual host.
    SSLEngine on

    #   A self-signed (snakeoil) certificate can be created by installing
    #   the ssl-cert package. See
    #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
    #   If both key and certificate are stored in the same file, only the
    #   SSLCertificateFile directive is needed.
    SSLCertificateFile    /etc/ssl/certs/exampleone.com.crt
    SSLCertificateKeyFile /etc/ssl/private/exampleone.com.key

2voto

Benjamin Points 83

MODIFICATION: Comme l'ont souligné d'autres, regardez SNI

Comme expliqué ici, un serveur contacté via https ne peut pas deviner avant d'envoyer son certificat le nom de domaine que le client souhaite contacter.

Si http://exampleone.com est servi en https, cela signifie que la première chose qu'un visiteur recevra de ce serveur est "Salut, mon certificat est valide pour le nom http://exampleone.com", même si vous voulez http://exampletwo.com. Ainsi, vous ne pouvez pas désactiver le https pour http://exampletwo.com, ni configurer une redirection ou autre chose qui ne conduirait pas à un avertissement pour le visiteur.

Plus d'explications ici

Pour répondre à votre préoccupation, vous avez besoin de deux adresses IP différentes pour servir vos deux noms de domaine.

2voto

Halfgaar Points 7731

Vous pouvez activer SNI. Tout ce que vous avez à faire est d'inclure un NameVirtualHost *:443 avec votre déclaration Listen 443 (Dans la configuration apache d'ubuntu, ajoutez-le à /etc/apache/ports.conf). Vous pouvez ensuite configurer un deuxième hôte virtuel SSL et leur donner à tous les deux un ServerName.

Remarque : les anciens navigateurs ne prennent pas en charge SNI. Aucune version d'IE sous Windows XP, par exemple. Dans ce cas, la restriction de l'adresse IP par site mentionnée par l'utilisateur2299bla est valable.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X