1.8. Configuration du cryptage TLS sur un serveur HTTP Apache
Par défaut, Apache fournit du contenu aux clients en utilisant une connexion HTTP non chiffrée. Cette section explique comment activer le chiffrement TLS et configurer les paramètres de chiffrement les plus fréquemment utilisés sur un serveur HTTP Apache.
Conditions préalables
- Le serveur HTTP Apache est installé et fonctionne.
1.8.1. Ajouter le cryptage TLS à un serveur HTTP Apache
Cette section décrit comment activer le cryptage TLS sur un serveur HTTP Apache pour le domaine example.com
.
Conditions préalables
- Le serveur HTTP Apache est installé et fonctionne.
La clé privée est stockée dans le fichier
/etc/pki/tls/private/example.com.key
.Pour plus de détails sur la création d'une clé privée et d'une demande de signature de certificat (CSR), ainsi que sur la manière de demander un certificat à une autorité de certification (AC), reportez-vous à la documentation de votre AC. Par ailleurs, si votre autorité de certification prend en charge le protocole ACME, vous pouvez utiliser le module
mod_md
pour automatiser la récupération et le provisionnement des certificats TLS.-
Le certificat TLS est stocké dans le fichier
/etc/pki/tls/certs/example.com.crt
. Si vous utilisez un chemin différent, adaptez les étapes correspondantes de la procédure. -
Le certificat CA est stocké dans le fichier
/etc/pki/tls/certs/ca.crt
. Si vous utilisez un chemin différent, adaptez les étapes correspondantes de la procédure. - Les clients et le serveur web transforment le nom d'hôte du serveur en adresse IP du serveur web.
Procédure
Installez le paquetage
mod_ssl
:# dnf install mod_ssl
Modifiez le fichier
/etc/httpd/conf.d/ssl.conf
et ajoutez les paramètres suivants à la directive<VirtualHost _default_:443>
:Définir le nom du serveur :
ServerName example.com
ImportantLe nom du serveur doit correspondre à l'entrée définie dans le champ
Common Name
du certificat.Facultatif : Si le certificat contient des noms d'hôtes supplémentaires dans le champ
Subject Alt Names
(SAN), vous pouvez configurermod_ssl
pour qu'il fournisse également un cryptage TLS pour ces noms d'hôtes. Pour ce faire, ajoutez le paramètreServerAliases
avec les noms correspondants :ServerAlias www.example.com server.example.com
Définissez les chemins d'accès à la clé privée, au certificat du serveur et au certificat de l'autorité de certification :
SSLCertificateKeyFile "/etc/pki/tls/private/example.com.key" SSLCertificateFile "/etc/pki/tls/certs/example.com.crt" SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"
Pour des raisons de sécurité, configurez l'accès au fichier de la clé privée uniquement pour l'utilisateur
root
:# chown root:root /etc/pki/tls/private/example.com.key # chmod 600 /etc/pki/tls/private/example.com.key
AvertissementSi des utilisateurs non autorisés ont eu accès à la clé privée, révoquez le certificat, créez une nouvelle clé privée et demandez un nouveau certificat. Sinon, la connexion TLS n'est plus sécurisée.
Si vous utilisez
firewalld
, ouvrez le port443
dans le pare-feu local :# firewall-cmd --permanent --add-port=443/tcp # firewall-cmd --reload
Redémarrez le service
httpd
:# systemctl restart httpd
NoteSi vous avez protégé le fichier de clé privée par un mot de passe, vous devez saisir ce mot de passe à chaque démarrage du service
httpd
.
Verification steps
-
Utilisez un navigateur et connectez-vous à
https://example.com
.
Ressources supplémentaires
1.8.2. Définition des versions du protocole TLS prises en charge sur un serveur HTTP Apache
Par défaut, le serveur HTTP Apache sur RHEL utilise la politique cryptographique du système qui définit des valeurs par défaut sûres, qui sont également compatibles avec les navigateurs récents. Par exemple, la politique DEFAULT
définit que seules les versions des protocoles TLSv1.2
et TLSv1.3
sont activées dans Apache.
Cette section décrit comment configurer manuellement les versions du protocole TLS prises en charge par le serveur HTTP Apache. Suivez la procédure si votre environnement exige que seules certaines versions du protocole TLS soient activées, par exemple :
-
Si votre environnement l'exige, les clients peuvent également utiliser le protocole faible
TLS1
(TLSv1.0) ouTLS1.1
. -
Si vous souhaitez configurer Apache pour qu'il ne prenne en charge que le protocole
TLSv1.2
ouTLSv1.3
.
Conditions préalables
- Le cryptage TLS est activé sur le serveur comme décrit dans Ajout du cryptage TLS à un serveur HTTP Apache.
Procédure
Modifiez le fichier
/etc/httpd/conf/httpd.conf
et ajoutez le paramètre suivant à la directive<VirtualHost>
pour laquelle vous souhaitez définir la version du protocole TLS. Par exemple, pour activer uniquement le protocoleTLSv1.3
:SSLProtocol -All TLSv1.3
Redémarrez le service
httpd
:# systemctl restart httpd
Verification steps
Utilisez la commande suivante pour vérifier que le serveur prend en charge
TLSv1.3
:# openssl s_client -connect example.com:443 -tls1_3
Utilisez la commande suivante pour vérifier que le serveur ne prend pas en charge
TLSv1.2
:# openssl s_client -connect example.com:443 -tls1_2
Si le serveur ne prend pas en charge le protocole, la commande renvoie une erreur :
140111600609088:error:1409442E:Routines SSL:ssl3_read_bytes:version du protocole d'alerte tlsv1:ssl/record/rec_layer_s3.c:1543:alerte SSL numéro 70
- Facultatif : Répétez la commande pour d'autres versions du protocole TLS.
Ressources supplémentaires
-
update-crypto-policies(8)
page de manuel - Utilisation de politiques cryptographiques à l'échelle du système.
-
Pour plus de détails sur le paramètre
SSLProtocol
, reportez-vous à la documentationmod_ssl
dans le manuel Apache : Manuel d'installation du serveur HTTP Apache.
1.8.3. Définition des algorithmes de chiffrement pris en charge sur un serveur HTTP Apache
Par défaut, le serveur HTTP Apache utilise la politique cryptographique du système qui définit des valeurs par défaut sûres, également compatibles avec les navigateurs récents. Pour obtenir la liste des algorithmes de chiffrement autorisés par la politique cryptographique du système, consultez le fichier /etc/crypto-policies/back-ends/openssl.config
.
Cette section explique comment configurer manuellement les algorithmes de chiffrement pris en charge par le serveur HTTP Apache. Suivez la procédure si votre environnement requiert des algorithmes de chiffrement spécifiques.
Conditions préalables
- Le cryptage TLS est activé sur le serveur comme décrit dans Ajout du cryptage TLS à un serveur HTTP Apache.
Procédure
Modifiez le fichier
/etc/httpd/conf/httpd.conf
et ajoutez le paramètreSSLCipherSuite
à la directive<VirtualHost>
pour laquelle vous souhaitez définir les algorithmes TLS :SSLCipherSuite "EECDH AESGCM:EDH AESGCM:AES256 EECDH:AES256 EDH:!SHA1:!SHA256"
Cet exemple n'active que les algorithmes de chiffrement
EECDH AESGCM
,EDH AESGCM
,AES256 EECDH
etAES256 EDH
et désactive tous les algorithmes de chiffrement qui utilisent les codes d'authentification des messages (MAC)SHA1
etSHA256
.Redémarrez le service
httpd
:# systemctl restart httpd
Verification steps
Pour afficher la liste des algorithmes de chiffrement pris en charge par le serveur HTTP Apache :
Installez le paquetage
nmap
:# dnf install nmap
Utilisez l'utilitaire
nmap
pour afficher les algorithmes de chiffrement pris en charge :# nmap --script ssl-enum-ciphers -p 443 example.com ... PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A ...
Ressources supplémentaires
-
update-crypto-policies(8)
page de manuel - Utilisation de politiques cryptographiques à l'échelle du système.
- SSLCipherSuite