This is an old revision of the document!
GnuTLS contrairement au plus utilisé mod_ssl est une implémentation libre du protocole SSL pour Apache.
Il supporte le SNI (Server Name Indication) permettant d’avoir plusieurs sites protégés par SSL sur la même adresse IP contrairemnt à mod_ssl (du moins sur les implémentations anciennes).
Installation du module
sudo apt-get install libapache2-mod-gnutls
On n’oublie pas de désactiver le module mod_ssl si présent pour éviter d’utiliser deux fois le port 443 :
sudo a2dismod ssl
On active ensuite le module GnuTLS :
sudo a2enmod gnutls
On doit ensuite redémarrer le serveur Apache avec la commande :
sudo /etc/init.d/apache2 restart
Copier dans le presse-papier Configuration spécifique
Activer le SNI
Pour activer la possibilité d’avoir plusieurs sites différents utilisant le port 443 (ssl), il faut utiliser la directive NameVirtualHost.
On édite le fichier de configuration des ports d’Apache2 :
sudo nano /etc/apache2/ports.conf
Copier dans le presse-papier
Et ajouter dans la partie <IfModule mod_gnutls.c>…</IfModule> ajouter :
NameVirtualHost *:443
Copier dans le presse-papier
Création d’un virtualhost
On peut maintenant créer un virtualhost qui se crée exactement comme pour un site normal :
sudo nano /etc/apache2/sites-available/test-ssl
Copier dans le presse-papier
On y ajoute la configuration de base suivante par exemple, conditionnée à la présence du module gnutls :
<IfModule mod_gnutls.c> <VirtualHost *:443> ServerAdmin webmaster@localhost ServerName domaine.tld DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined </VirtualHost> </IfModule>
Télécharger - Copier dans le presse-papier
NB : Attention pour le moment, nous n’avons toujours pas créé de certificat Modification de vos certificats pour mod_gnutls
GnuTLS ne gère pas tout à fait les mêmes directives que mod_ssl pour l’indication des certificats, clés et chains nécessaires.
Les directives suivantes remplacent celles de mod_ssl :
GnuTLSCertificateFile remplace SSLCertificateFile ; GnuTLSKeyFile remplace SSLCertificateKeyFile ;
Par contre il n’y a pas de directives pour remplacer :
SSLCertificateChainFile ; SSLCACertificateFile ;
Ces deux dernières directives permettent de spécifier pour mod_ssl des certificats intermédiaires ou chainés.
Pour pallier ce manque il suffit d’insérer le contenu de ces certificats dans le votre.
Si on prend l’exemple de StartSSL ici, on a besoin de notre certificat ainsi que sub.class1.server.ca.pem et ca.pem.
Pour ce faire il suffit de les concaténer dans notre certificat comme ceci :
# On ajoute sub.class1.server.ca.pem dans notre /etc/ssl/domaine.tld.pem cat sub.class1.server.ca.pem >> /etc/ssl/domaine.tld.pem # On ajoute ca.pem dans notre /etc/ssl/domaine.tld.pem cat ca.pem >> /etc/ssl/domaine.tld.pem
Télécharger - Copier dans le presse-papier Ajout du certificat dans le virtualhost
On peut alors ajouter nos directives dans le virtualhost précédemment créé :
sudo nano /etc/apache2/sites-available/test-ssl
Copier dans le presse-papier
Et on ajoute dans notre virtualhost :
GnuTLSEnable on GnuTLSKeyFile /etc/ssl/domaine.tld.key GnuTLSCertificateFile /etc/ssl/domaine.tld.pem GnuTLSPriorities NONE:+VERS-TLS1.1:+VERS-TLS1.0:+AES-256-CBC:+DHE-RSA:+RSA:+SHA1:+COMP-NULL:+COMP-DEFLATE
Télécharger - Copier dans le presse-papier Activation du virtualhost et redémarrage
On peut maintenant activer le virtualhost :
sudo a2ensite test-ssl
Copier dans le presse-papier
Puis recharger la configuration d’Apache :
sudo /etc/init.d/apache2 reload
Copier dans le presse-papier
Vous devriez maintenant pouvoir accéder avec votre site à l’adresse : https://domaine.tld