Recherche de site Web

Série RHCE : Mise en œuvre de HTTPS via TLS à l’aide du service de sécurité réseau (NSS) pour Apache - Partie 8


Si vous êtes un administrateur système chargé de maintenir et de sécuriser un serveur Web, vous ne pouvez pas vous permettre de ne pas consacrer vos meilleurs efforts à vous assurer que les données servies par votre serveur ou passant par celui-ci sont protégées à tout moment.

Afin de fournir des communications plus sécurisées entre les clients web et les serveurs, le protocole HTTPS est né d’une combinaison de HTTP et de SSL (Secure Sockets Layer) ou plus récemment, de TLS (Transport Layer Security).

En raison de graves failles de sécurité, SSL a été déprécié au profit du TLS plus robuste. Pour cette raison, dans cet article, nous allons expliquer comment sécuriser les connexions entre votre serveur Web et vos clients à l’aide de TLS.

Ce tutoriel suppose que vous avez déjà installé et configuré votre serveur Web Apache. Si ce n’est pas le cas, veuillez vous référer à l’article suivant sur ce site avant de continuer.

  1. Installer LAMP (Linux, MySQL/MariaDB, Apache et PHP) sur RHEL/CentOS 7

Installation d’OpenSSL et des utilitaires

Tout d’abord, assurez-vous qu’Apache est en cours d’exécution et que http et https sont autorisés à travers le pare-feu :


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Installez ensuite les packages nécessaires :


yum update && yum install openssl mod_nss crypto-utils

Important : Veuillez noter que vous pouvez remplacer mod_nss par mod_ssl dans la commande ci-dessus si vous souhaitez utiliser des bibliothèques OpenSSL au lieu de NSS (Network Security Service) pour implémenter TLS (lequel utiliser dépend entièrement de vous, mais nous utiliserons NSS dans cet article car il est plus robuste ; par exemple, il prend en charge les normes de cryptographie récentes telles que PKCS #11).

Enfin, désinstallez mod_ssl si vous avez choisi d’utiliser mod_nss, ou vice-versa.


yum remove mod_ssl

Configuration du NSS (Network Security Service)

Une fois mod_nss installé, son fichier de configuration par défaut est créé sous la forme /etc/httpd/conf.d/nss.conf. Vous devez ensuite vous assurer que toutes les directives Listen et VirtualHost pointent vers le port 443 (port par défaut pour HTTPS) :


Listen 443
VirtualHost _default_:443

Redémarrez ensuite Apache et vérifiez si le module mod_nss a été chargé :


apachectl restart
httpd -M | grep nss

Ensuite, les modifications suivantes doivent être effectuées dans le fichier de configuration /etc/httpd/conf.d/nss.conf :

1. Indiquez le répertoire de la base de données NSS. Vous pouvez utiliser le répertoire par défaut ou en créer un nouveau. Dans ce tutoriel, nous allons utiliser la valeur par défaut :


NSSCertificateDatabase /etc/httpd/alias

2. Évitez la saisie manuelle de la phrase de passe à chaque démarrage du système en enregistrant le mot de passe dans le répertoire de la base de données dans /etc/httpd/nss-db-password.conf :


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Où /etc/httpd/nss-db-password.conf contient UNIQUEMENT la ligne suivante et mypassword est le mot de passe que vous définirez ultérieurement pour la base de données NSS :


internal:mypassword

De plus, ses permissions et sa propriété doivent être définies respectivement sur 0640 et root :apache :


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat recommande de désactiver SSL et toutes les versions de TLS antérieures à TLSv1.0 en raison de la vulnérabilité POODLE SSLv3 (plus d’informations ici).

Assurez-vous que chaque instance de la directive NSSProtocol se lit comme suit (vous risquez de n’en trouver qu’une seule si vous n’hébergez pas d’autres hôtes virtuels) :


NSSProtocol TLSv1.0,TLSv1.1

4. Apache refusera de redémarrer car il s’agit d’un certificat auto-signé et ne reconnaîtra pas l’émetteur comme valide. Pour cette raison, dans ce cas particulier, vous devrez ajouter :


NSSEnforceValidCerts off

5. Bien que cela ne soit pas strictement obligatoire, il est important de définir un mot de passe pour la base de données NSS :


certutil -W -d /etc/httpd/alias

Articles connexes: