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?
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
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é
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.
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>
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)
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é.
Vous DEVEZ ajouter une partie ci-dessous pour activer la fonctionnalité NameVirtualHost
avec une adresse IP donnée.
NameVirtualHost IP_Address:443