40 votes

Hôte virtuel Apache Name avec SSL

Je suis tenter de configuration de nos serveurs afin de permettre la circulation sur SSL. Je suis conscient que le protocole SSL ne fonctionne pas avec le Nom de l'Hôte Virtuel, mais nous avons tous nos serveurs apache sur des machines virtuelles privé dédié à IPs. Nous avons une primaire de la machine virtuelle qui a mod_proxy d'installation pour acheminer le trafic vers les ordinateurs virtuels appropriés.

Toutefois, afin d'acheminer le trafic https, nous avons besoin d'avoir le certificat installé sur le formulaire de procuration ainsi que les machines virtuelles. Nous avons un certificat générique qui peut être utilisé sur l'ensemble de nos hôtes. Tout semble fonctionner correctement, mais j'ai le message suivant dans les logs apache pour le proxy:

[avertissement] Init: SSL serveur IP/port conflit: host1.domaine.com:443 (/etc/apache2/sites-enabled/host1:1) vs host2.domaine.com:443 (/etc/apache2/sites-enabled/host2:1)

Il est l'un de ces message d'erreur pour chaque hôte, nous avons au programme de configuration du proxy. Notre Hôte Virtuel la configuration du proxy est affiché ci-dessous:

<VirtualHost ipaddress:443>
    ServerName host1.domain.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / https://privateip:443/
    ProxyPassReverse / https://privateip:443/

    SSLProxyEngine on
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>

Est-il possible que je peux obtenir que cela fonctionne?

21voto

David Z Points 49476

Il sonne comme Apache est pour vous avertir que vous avez plusieurs <VirtualHost> articles avec la même adresse IP et le port... autant que faire fonctionner sans mise en garde, je pense que vous devez utiliser quelque chose comme SNI (Server Name Indication), un moyen d'identifier le nom d'hôte demandé dans le cadre de la négociation SSL. Fondamentalement, il permet de faire de l'hébergement virtuel par nom sur SSL, mais je ne suis pas sûr de la façon dont il est pris en charge par les navigateurs. Autre que quelque chose comme la SNI, vous êtes essentiellement limitée à un SSL est activé nom de domaine pour chaque adresse IP, vous vous exposez à l'internet public.

Bien sûr, si vous êtes en mesure d'accéder à des sites web correctement, vous aurez probablement être bien ignorant les mises en garde. Ces particuliers ne sont pas très grave, ils sont principalement en une indication de ce à regarder si vous rencontrez des problèmes

7voto

user273370 Points 51

Pour autant que je sache, Apache prend en charge SNI depuis la version 2.2.12 Malheureusement, la documentation ne reflète pas encore ce changement.

Allez sur http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI jusqu'à ce que ce soit terminé

3voto

Harold Points 196

Vous pourrez peut-être remplacer:

 VirtualHost ipaddress:443
 

avec

 VirtualHost *:443
 

Vous devrez probablement faire ceci sur tous vos hôtes virtuels.

Cela clarifiera probablement ce message. Laissez la directive ServerName s'inquiéter du routage de la demande de message.

Encore une fois, vous ne pourrez peut-être pas le faire si vous avez plusieurs alias d'IP sur la même machine.

1voto

Powerlord Points 43989

Apache ne prend pas en charge SSL sur le nom de l'hôte virtuel, uniquement sur les Hôtes Virtuels basés sur IP.

Source: Apache 2.2 FAQ SSL question Pourquoi il n'est pas possible d'utiliser l'Hébergement Virtuel par Nom pour identifier les différents hôtes virtuels?

À la différence de SSL, TLS spécification permet de serveurs virtuels par nom (SNI comme mentionné par quelqu'un d'autre), mais Apache ne prend pas encore en charge cette fonctionnalité. Il est censé sera dans une version ultérieure, lors de la compilation à l'encontre de openssl 0.9.8.

Aussi, mod_gnutls allégations à l'appui de la SNI, mais je n'ai jamais réellement essayé.

1voto

DataCZ Points 11

D'abord, vous avez besoin de NameVirtualHost ip: 443 dans votre fichier de configuration! Vous en avez probablement un avec 80 à la fin, mais vous en aurez également besoin d'un avec 443.

Deuxièmement, vous avez besoin d'un certificat * .domain (caractère générique) (il est possible d'en créer un)

Troisièmement, vous ne pouvez créer que des sites Web Something.domain dans une seule IP (en raison du certificat)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X