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 <IfModule mod_gnutls.c>...</IfModule>
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
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>
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
remplaceSSLCertificateFile
; -
GnuTLSKeyFile
remplaceSSLCertificateKeyFile
;
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
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
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
Activation du virtualhost et redémarrage
On peut maintenant activer le virtualhost :
- sudo a2ensite test-ssl
Puis recharger la configuration d’Apache :
- sudo /etc/init.d/apache2 reload
Vous devriez maintenant pouvoir accéder avec votre site à l’adresse : https://domaine.tld