Apache multi Vhost en https ssl

SSL-SSL_Logo__red.jpgCe 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.

  1. cp /etc/apache2/mods-available/gnutls.conf /etc/apache2/mods-enabled/
  2. 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.

  1. rm /etc/apache2/mods-enabled/ssl.load
  2. 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:

  1. /etc/init.d/apache2 restart

liens

Une version "fedora et avec compilation du module" de ce tuto

Plusieurs ssl en utilisant "subjectAltname"

Commentaires

1. Le jeudi, juillet 8 2010, 18:38 par Laurent Go

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)

2. Le vendredi, juillet 9 2010, 08:51 par gnieark

EN effet,
Merci pour l'info Laurent.

Page top