Apache multi Vhost en https ssl
Ce billet a pour but de décrire une méthode pour utiliser différents certificats ssl sur une même instance apache (même adresse IP du serveur, mais plusieurs VHOST) Il existe d'autres méthodes.
Mod-ssl, le module d'apache le plus commun pour le ssl ne sait pas gérer plusieurs certificats pour des vhosts différents sur la même ip. gnu-tls sait le faire. Dans certaines documentations, il est présenté comme instable. Cependant il est à présent dans les dépots de débian.
Installer mod_gnutls module
Comme je suis optimiste, je teste direct sur le serveur tinad.
apt-get install libapache2-mod-gnutls
Activer le module:
Pour cela, on copie les fichiers .load et .conf dans le repertoire mods-enabled d'apache.
cp /etc/apache2/mods-available/gnutls.conf /etc/apache2/mods-enabled/ cp /etc/apache2/mods-available/gnutls.load /etc/apache2/mods-enabled/
Désactiver mod-ssl (si il est présent)
C'est soit gnutls soit ssl, je n'ai pas réussi à faire tourner les deux en même temps sur le serveur.
rm /etc/apache2/mods-enabled/ssl.load rm /etc/apache2/mods-enabled/ssl.conf
Adapter TOUS les fichiers de configuration des différents vhost qui sont en https.
Dans mon cas:
- Commenter tout ce qui se rapporte à ssl
- GnuTLS ne supporte pas les fichiers certificats incluant la clé, il faut faire deux fichiers séparés (voir ce tuto).
- Rajouter les directives GnuTLS.
A titre d'exemple, voici le fichier de conf pour le vhost hébergeant ce blog. J'ai juste commenté et pas supprimé les lignes ssl:
<VirtualHost *:443> ServerName blog-du-grouik.tinad.fr DocumentRoot /var/www/blog-du-grouik.tinad.fr ServerAdmin le-spam-ne-passera-pas-et-les-autres-messages-non-plus@tinad.fr <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/blog-du-grouik.tinad.fr> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place # Commented out for Ubuntu #RedirectMatch ^/$ /apache2-default/ </Directory> ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined # SSLEngine on # SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL # SSLCertificateFile /etc/apache2/ssl/blog-du-grouik.tinad.fr-certkey-www.pem # SSLVerifyClient none # SSLVerifyDepth 10 # SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 GnuTLSEnable on GnuTLSPriorities NORMAL GnuTLSCertificateFile /etc/apache2/ssl/blog-du-grouik.tinad.fr-cert-www.pem GnuTLSKeyFile /etc/apache2/ssl/blog-du-grouik.tinad.fr-key-www.pem </VirtualHost>
Et heu quand tout est modifié, redémarrer appache bien sur:
/etc/init.d/apache2 restart
liens
Une version "fedora et avec compilation du module" de ce tuto
Commentaires
Il est à présent possible de faire pareil avec mod_ssl à partir d'openssl 0.9.8j et apache 2.2.12.
Cf cette doc officielle : http://wiki.apache.org/httpd/NameBa...
Cela marche donc avec les dernières versions d'Ubuntu (je teste cela avec succès)
EN effet,
Merci pour l'info Laurent.