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
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
Et ajouter dans la partie ... ajouter :
NameVirtualHost *:443
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 :
ServerAdmin webmaster@localhost
ServerName domaine.tld
DocumentRoot /var/www
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
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
NB : Attention pour le moment, nous n’avons toujours pas créé de certificat
Modification de vos certificats pour mod_gnutls