Recherche de site Web

Série RHCE : Implémentation 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 tous vos efforts pour garantir que les données servies par ou transitant par votre serveur 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, TLS (Transport Layer Security).

En raison de graves failles de sécurité, SSL a été abandonné au profit du TLS, plus robuste. Pour cette raison, dans cet article, nous expliquerons comment sécuriser les connexions entre votre serveur Web et les clients à l'aide de TLS.

Ce tutoriel suppose que vous avez déjà installé et configuré votre serveur Web Apache. Sinon, veuillez vous référer à l'article suivant sur ce site avant de continuer.

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

Installation d'OpenSSL et des utilitaires

Tout d'abord, assurez-vous que 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 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 choisissez d'utiliser mod_nss, ou vice versa.


yum remove mod_ssl

Configuration de NSS (service de sécurité réseau)

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 apportées au 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 utiliserons la valeur par défaut :


NSSCertificateDatabase /etc/httpd/alias

2. Évitez de saisir manuellement la phrase secrète à 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

/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 autorisations 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 du TLSv1.0. >Vulnérabilité POODLE SSLv3 (plus d'informations ici).

Assurez-vous que chaque instance de la directive NSSProtocol se lit comme suit (vous n'en trouverez probablement 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