Rechercher

1.8. Configuration du cryptage TLS sur un serveur HTTP Apache

download PDF

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

  1. Installez le paquetage mod_ssl:

    # dnf install mod_ssl
  2. Modifiez le fichier /etc/httpd/conf.d/ssl.conf et ajoutez les paramètres suivants à la directive <VirtualHost _default_:443>:

    1. Définir le nom du serveur :

      ServerName example.com
      Important

      Le nom du serveur doit correspondre à l'entrée définie dans le champ Common Name du certificat.

    2. Facultatif : Si le certificat contient des noms d'hôtes supplémentaires dans le champ Subject Alt Names (SAN), vous pouvez configurer mod_ssl pour qu'il fournisse également un cryptage TLS pour ces noms d'hôtes. Pour ce faire, ajoutez le paramètre ServerAliases avec les noms correspondants :

      ServerAlias www.example.com server.example.com
    3. 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"
  3. 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
    Avertissement

    Si 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.

  4. Si vous utilisez firewalld, ouvrez le port 443 dans le pare-feu local :

    # firewall-cmd --permanent --add-port=443/tcp
    # firewall-cmd --reload
  5. Redémarrez le service httpd:

    # systemctl restart httpd
    Note

    Si 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.

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) ou TLS1.1.
  • Si vous souhaitez configurer Apache pour qu'il ne prenne en charge que le protocole TLSv1.2 ou TLSv1.3.

Conditions préalables

Procédure

  1. 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 protocole TLSv1.3:

    SSLProtocol -All TLSv1.3
  2. Redémarrez le service httpd:

    # systemctl restart httpd

Verification steps

  1. Utilisez la commande suivante pour vérifier que le serveur prend en charge TLSv1.3:

    # openssl s_client -connect example.com:443 -tls1_3
  2. 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
  3. Facultatif : Répétez la commande pour d'autres versions du protocole TLS.

Ressources supplémentaires

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

Procédure

  1. Modifiez le fichier /etc/httpd/conf/httpd.conf et ajoutez le paramètre SSLCipherSuite à 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 et AES256 EDH et désactive tous les algorithmes de chiffrement qui utilisent les codes d'authentification des messages (MAC) SHA1 et SHA256.

  2. Redémarrez le service httpd:

    # systemctl restart httpd

Verification steps

  1. Pour afficher la liste des algorithmes de chiffrement pris en charge par le serveur HTTP Apache :

    1. Installez le paquetage nmap:

      # dnf install nmap
    2. 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

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.