La série RHCE implémentant HTTPS via TLS en utilisant le service de sécurité du réseau (NSS) pour Apache - partie 8

La série RHCE implémentant HTTPS via TLS en utilisant le service de sécurité du réseau (NSS) pour Apache - partie 8

Si vous êtes un administrateur système qui est chargé de maintenir et de sécuriser un serveur Web, vous ne pouvez pas vous permettre de ne pas consacrer à vos meilleurs efforts pour vous assurer que les données desservies ou de parcourir votre serveur sont protégées à tout moment.

Série RHCE: Implémentation de HTTPS via TLS en utilisant le service de sécurité réseau (NSS) pour Apache - Partie 8

Afin de fournir des communications plus sécurisées entre les clients Web et les serveurs, le Https Le protocole est né comme une combinaison de Http et SSL (Calque de sockets sécurisé) ou plus récemment, TLS (Sécurité de la couche de transport).

En raison de quelques violations de sécurité graves, SSL a été obsolète en faveur du plus robuste TLS. 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 dans ce site avant de poursuivre.

  1. Installez la lampe (Linux, MySQL / MariaDB, Apache et PHP) sur RHEL / CENTOS 7

Installation d'OpenSSL et de services publics

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

# systemctl start http # systemctl activer http # Firewall-cmd --permanent --add-Service = http # Firewall-Cmd --permanent --add-Service = https 

Ensuite, installez les packages nécessaires:

# yum Update && yum install openssl mod_nss crypto-utils 

Important: Veuillez noter que vous pouvez remplacer mod_nss avec mod_ssl dans la commande ci-dessus si vous souhaitez utiliser OpenSSL bibliothèques au lieu de NSS (Service de sécurité du réseau) implémenter TLS (Le celui à utiliser est entièrement laissé à vous, mais nous utiliserons le 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ésinstaller mod_ssl Si vous avez choisi d'utiliser mod_nss, ou vice versa.

# yum supprimer mod_ssl 

Configuration du NSS (Network Security Service)

Après mod_nss est installé, son fichier de configuration par défaut est créé comme / etc / httpd / confre.d / nss.confli. Vous devez alors vous assurer que tous les Écouter et VirtualHost Les directives pointent vers le port 443 (port par défaut pour https):

NSS.Fichier de configuration de Conf
Écoutez 443 VirtualHost _default_: 443 

Puis redémarrer Apache et vérifier si le mod_nss Le module a été chargé:

# apachectl redémarrer # httpd -m | grep nss 
Vérifiez le module mod_nss chargé en apache

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

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 l'entrée manuelle en phrase de passe sur chaque système Démarrer par enregistrer le mot de passe dans le répertoire de la base de données dans / etc / httpd / nss-db-password.confli:

Fichier NSSpassphReaseDialog: / etc / httpd / nss-db-password.confli 

/ etc / httpd / nss-db-password.confli ne contient que la ligne suivante et mon mot de passe est le mot de passe que vous définissez plus tard pour la base de données NSS:

Internal: MyPassword 

De plus, ses autorisations et sa propriété devraient être définies pour 0640 et Root: Apache, respectivement:

# Chmod 640 / etc / httpd / nss-db-password.conf # chgrp apache / etc / httpd / nss-db-password.confli 

3. Red Hat recommande de désactiver SSL et toutes les versions de TLS avant TLSV1.0 en raison de Poodle SSLV3 vulnérabilité (plus d'informations ici).

Assurez-vous que chaque instance du Nssprotocol La directive se lit comme suit (vous n'en trouverez probablement qu'une 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 

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

# CerUtil -w -d / etc / httpd / alias 
Définir le mot de passe pour les pages de base de données NSS: 1 2