web-dev-qa-db-fra.com

Nom Apache Hôte virtuel avec SSL

J'essaie de configurer nos serveurs pour autoriser le trafic via SSL. Je suis conscient que SSL ne fonctionne pas avec Name Virtual Host, mais nous avons tous nos serveurs Apache sur des machines virtuelles avec des adresses IP privées dédiées. Nous avons une machine virtuelle principale dotée de la configuration mod_proxy pour acheminer le trafic vers le vms approprié.

Cependant, pour acheminer le trafic https, le certificat doit être installé sur le proxy ainsi que sur le vms. Nous avons un certificat générique qui peut être utilisé sur tous nos hôtes. Tout semble fonctionner correctement, mais je reçois les informations suivantes dans les journaux Apache pour le proxy:

[avertir] Init: conflit IP/port du serveur SSL: Host1.domain.com:443 (/ etc/Apache2/sites-enabled/Host1: 1) contre Host2.domain.com:443 (/ etc/Apache2/sites- activé/hôte 2: 1)

Il y a un de ces messages d'erreur pour chaque hôte que nous avons configuré sur le proxy. La configuration de notre hôte virtuel pour le proxy est publiée 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>

Y a-t-il un moyen de faire en sorte que cela fonctionne?

36
JamesArmes

On dirait que Apache vous avertit que vous avez plusieurs sections <VirtualHost> avec la même adresse IP et le même port ... pour que cela fonctionne sans avertissements, je pense que vous devriez utiliser quelque chose comme Indication de nom de serveur (SNI), un manière d’identifier le nom d’hôte demandé dans le cadre de la négociation SSL. Fondamentalement, il vous permet d’effectuer un hébergement virtuel basé sur un nom sur SSL, mais je ne sais pas dans quelle mesure il est bien pris en charge par les navigateurs. Hormis quelque chose comme SNI, vous êtes fondamentalement limité à un nom de domaine compatible SSL pour chaque adresse IP que vous exposez à l'Internet public.

Bien sûr, si vous pouvez accéder aux sites Web correctement, vous pourrez probablement ignorer les avertissements. Ceux-ci en particulier ne sont pas très graves - ils sont principalement une indication de ce qu'il faut regarder si vous rencontrez des problèmes

21
David Z

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.

Aller pour http://wiki.Apache.org/httpd/NameBasedSSLVHostsWithSNI jusqu'à ce que ce soit terminé

7
user273370

Vous pourrez peut-être remplacer le: 

VirtualHost ipaddress:443

avec 

VirtualHost *:443

Vous avez probablement besoin de le faire sur tous vos hôtes virtuels.

Cela éclaircira 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 faire cela si vous avez plusieurs alias d'IP sur le même ordinateur.

3
Harold

Le VirtualHost ressemblerait à ceci:

NameVirtualHost IP_Address:443

<VirtualHost IP_Address:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt    # Where "ca" is the name of the Certificate
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    ServerAdmin webmaster@domain_name.com
    DocumentRoot /var/www/html
    ServerName www.domain_name.com
    ErrorLog logs/www.domain_name.com-error_log
    CustomLog logs/www.domain_name.com-access_log common
</VirtualHost>
2
ELinuxbook

Vous devez d’abord nommer NameVirtualHost ip: 443 dans votre fichier de configuration!.

Deuxièmement, vous avez besoin d'un certificat * .domain (joker) (il est possible d'en créer un)

Troisièmement, vous ne pouvez créer que des sites Web de quelque chose.domaine dans une adresse IP (à cause du certificat)

1
DataCZ

Apache ne prend pas en charge SSL sur les hôtes virtuels nommés, mais uniquement sur les hôtes virtuels basés sur IP.

Source: Apache 2.2 SSL FAQ question Pourquoi est-il impossible d'utiliser l'hébergement virtuel basé sur le nom pour identifier différents hôtes virtuels SSL?

Contrairement à SSL, la spécification TLS autorise les hôtes basés sur un nom (SNI, comme mentionné par quelqu'un d'autre), mais Apache ne prend pas encore en charge cette fonctionnalité. Il le fera soi-disant dans une version ultérieure lorsqu'il sera compilé avec openssl 0.9.8.

En outre, mod_gnutls prétend prendre en charge SNI, mais je ne l’ai jamais réellement essayé.

1
Powerlord

Vous DEVEZ ajouter une partie ci-dessous pour activer la fonctionnalité NameVirtualHost avec une adresse IP donnée.

NameVirtualHost IP_Address:443
0
Yasiru G