Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Tutoriel : ConfigurerSSL//TLSsur AL2 023
Secure Sockets Layer/Transport Layer Security (SSL/TLS) creates an encrypted channel
between a web server and web client that protects data in transit from being eavesdropped
on. This tutorial explains how to add support manually for SSL/TLS sur une EC2 instance avec AL2 023 et un serveur Web Apache. Ce tutoriel suppose que vous n’utilisez pas d’équilibreur de charge. Si vous utilisez Elastic Load Balancing, vous pouvez choisir de configurer le SSL déchargement sur l'équilibreur de charge en utilisant plutôt un certificat provenant de AWS Certificate Manager
Pour des raisons historiques, le chiffrement Web est souvent appelé simplementSSL. Bien que les navigateurs Web soient toujours compatiblesSSL, le protocole qui lui a succédé TLS est moins vulnérable aux attaques. AL2023 désactive le support côté serveur pour toutes les versions de par défaut. SSL Les organismes de normalisation de sécurité
Ce didacticiel fait référence au cryptage Web moderne simplement en tant queTLS.
Important
Ces procédures sont destinées à être utilisées avec AL2 023. Si vous essayez de configurer une EC2 instance exécutant une distribution différente ou une instance exécutant une ancienne version d'Amazon Linux, certaines procédures de ce didacticiel risquent de ne pas fonctionner. Pour Ubuntu, consultez la documentation de la communauté Ubuntu suivante : Open SSL on Ubuntu
Note
Vous pouvez également utiliser AWS Certificate Manager (ACM) pour les enclaves AWS Nitro, une application d'enclave qui vous permet d'utiliser des TLS certificatsSSL/publics et privés avec vos applications Web et vos serveurs exécutés sur des EC2 instances Amazon avec AWS Nitro Enclaves. Nitro Enclaves est une EC2 fonctionnalité d'Amazon qui permet de créer des environnements informatiques isolés afin de protéger et de traiter en toute sécurité des données hautement sensibles, telles que les SSL TLS certificats/clés privées.
ACMfor Nitro Enclaves fonctionne avec nginx exécuté sur votre instance EC2 Amazon Linux pour créer des clés privées, distribuer des certificats et des clés privées et gérer les renouvellements de certificats.
ACMPour utiliser Nitro Enclaves, vous devez utiliser une instance Linux compatible avec les enclaves.
Pour plus d'informations, consultez Qu'est-ce que AWS Nitro Enclaves ? et AWS Certificate Manager pour Nitro Enclaves dans le guide de l'utilisateur de AWS Nitro Enclaves.
Table des matières
Prérequis
Avant de commencer ce tutoriel, suivez les étapes suivantes :
-
Lancez une instance AL2 023 EBS sauvegardée par un. Pour de plus amples informations, veuillez consulter AL2023 sur Amazon EC2.
-
Configurez vos groupes de sécurité pour permettre à votre instance d'accepter des connexions sur les TCP ports suivants :
-
SSH(port 22)
-
HTTP(port 80)
-
HTTPS(port 443)
Pour plus d'informations, consultez Autoriser le trafic entrant pour vos instances Linux dans le guide de l'EC2utilisateur Amazon.
-
-
Installez le serveur Web Apache. Pour step-by-step obtenir des instructions, voirTutoriel : Installer un LAMP serveur sur AL2 023. Seuls le package httpd et ses dépendances sont nécessaires, vous pouvez donc ignorer les instructions impliquant PHP MariaDB.
-
Pour identifier et authentifier les sites Web, l'infrastructure à clé TLS publique (PKI) s'appuie sur le système de noms de domaine (DNS). Pour utiliser votre EC2 instance pour héberger un site Web public, vous devez enregistrer un nom de domaine pour votre serveur Web ou transférer un nom de domaine existant vers votre EC2 hôte Amazon. De nombreux services d'enregistrement et DNS d'hébergement de domaines tiers sont disponibles à cet effet, ou vous pouvez utiliser Amazon Route 53.
Étape 1 : activer TLS sur le serveur
Cette procédure vous guide tout au long du processus de configuration du TLS AL2 023 avec un certificat numérique autosigné.
Note
Un certificat auto-signé est acceptable dans un environnement de test, mais pas pour les environnements de production. Si vous exposez votre certificat auto-signé sur Internet, les visiteurs de votre site verront s’afficher des messages d’avertissement de sécurité.
Pour activer TLS sur un serveur
-
Connectez-vous à votre instance et confirmez qu’Apache est en cours d’exécution. Pour de plus amples informations, veuillez consulter Connexion à AL2 023 instances.
[ec2-user ~]$
sudo systemctl is-enabled httpd
Si la valeur renvoyée n’est pas « activé », démarrez Apache et configurez-le pour qu’il démarre à chaque amorçage du système.
[ec2-user ~]$
sudo systemctl start httpd && sudo systemctl enable httpd
-
Pour vous assurer que tous vos packages logiciels sont mis à jour, effectuez une mise à jour logicielle rapide sur votre instance. Ce processus peut prendre quelques minutes, mais il est important pour vous assurer que vous disposez des dernières mises à jour de sécurité et des nouveaux correctifs de bogues.
Note
L’option
-y
installe les mises à jour sans demander de confirmation. Si vous souhaitez examiner les mises à jour avant l’installation, vous pouvez omettre cette option.[ec2-user ~]$
sudo dnf install openssl mod_ssl
-
Une fois que vous avez saisi la commande suivante, vous êtes redirigé vers une invite où vous pouvez saisir des informations sur votre site.
[ec2-user ~]$
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt
Cela génère un nouveau fichier
apache-selfsigned.crt
dans le répertoire/etc/pki/tls/certs/
. Le nom de fichier spécifié correspond au nom par défaut attribué dans la directive SSLCertificateFile dans/etc/httpd/conf.d/ssl.conf
.Votre instance dispose désormais des fichiers suivants que vous utilisez pour configurer votre serveur sécurisé et créer un certificat pour les tests :
-
/etc/httpd/conf.d/ssl.conf
Le fichier de configuration de mod_ssl. Il contient des directives indiquant à Apache où trouver les clés de chiffrement et les certificats, les versions de TLS protocole à autoriser et les chiffrements à accepter. Voici votre fichier de certificat local :
-
/etc/pki/tls/certs/apache-selfsigned.crt
Ce fichier contient un certificat auto-signé et la clé privée du certificat. Apache exige que le certificat et la clé soient au PEM format, composé de ASCII caractères codés en Base64 encadrés par des lignes BEGIN « » et END « », comme dans l'exemple abrégé suivant.
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD2KKx/8Zk94m1q 3gQMZF9ZN66Ls19+3tHAgQ5Fpo9KJDhzLjOOCI8u1PTcGmAah5kEitCEc0wzmNeo BCl0wYR6G0rGaKtK9Dn7CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vr GvwnKoMh3DlK44D9dX7IDua2PlYx5+eroA+1Lqf32ZSaAO0bBIMIYTHigwbHMZoT ... 56tE7THvH7vOEf4/iUOsIrEzaMaJ0mqkmY1A70qQGQKBgBF3H1qNRNHuyMcPODFs 27hDzPDinrquSEvoZIggkDMlh2irTiipJ/GhkvTpoQlv0fK/VXw8vSgeaBuhwJvS LXU9HvYq0U6O4FgD3nAyB9hI0BE13r1HjUvbjT7moH+RhnNz6eqqdscCS09VtRAo 4QQvAqOa8UheYeoXLdWcHaLP -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vrGvwnKoMh3DlK44D9dlU3 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----
Les noms et extensions de fichiers sont fournis à titre indicatif et n’ont aucun effet sur la fonction. Par exemple, vous pouvez appeler un certificat
cert.crt
,cert.pem
, ou tout autre nom de fichier dans la mesure où la directive associée dans le fichierssl.conf
utilise le même nom.Note
Lorsque vous remplacez les TLS fichiers par défaut par vos propres fichiers personnalisés, assurez-vous qu'ils sont au PEM format.
-
-
Redémarrez Apache.
[ec2-user ~]$
sudo systemctl restart httpd
Note
Assurez-vous que le TCP port 443 est accessible sur votre EC2 instance, comme décrit précédemment.
-
Votre serveur Web Apache devrait désormais prendre en charge HTTPS (sécuriséHTTP) le port 443. Testez-le en saisissant l'adresse IP ou le nom de domaine complet de votre EC2 instance dans une URL barre de navigateur avec le préfixe
https://
.Étant donné que vous vous connectez à un site avec un certificat d’hôte auto-signé non approuvé, il se peut que votre navigateur affiche une série d’avertissements de sécurité. Ignorez-les et poursuivez sur le site.
Si la page de test Apache par défaut s'ouvre, cela signifie que vous avez correctement configuré TLS votre serveur. Toutes les données transmises entre le navigateur et le serveur sont maintenant chiffrées.
Note
Pour éviter aux visiteurs du site d’avoir des avertissements, vous devez obtenir un certificat signé par une CA qui chiffre mais vous authentifie aussi publiquement comme le propriétaire du site.
Étape 2 : Obtenir un certificat signé par une autorité de certification (CA)
Vous pouvez utiliser le processus suivant pour obtenir un certificat signé par une CA :
-
Générer une demande de signature de certificat (CSR) à partir d'une clé privée
-
Soumettez le CSR à une autorité de certification (CA)
-
Obtenez un certificat d’hôte signé
-
Configurez Apache pour utiliser le certificat
Un certificat hôte TLS X.509 autosigné est cryptologiquement identique à un certificat signé par une autorité de certification. La différence est sociale, pas mathématique. Une autorité de certification promet, au minimum, de valider la propriété d’un domaine avant de générer un certificat pour un demandeur. Chaque navigateur Web contient une liste des navigateurs auxquels le fournisseur du navigateur CAs fait confiance pour ce faire. Un certificat X.509 se compose surtout d’une clé publique qui correspond à votre clé de serveur privée et d’une signature de l’autorité de certification qui est cryptographiquement reliée à la clé publique. Lorsqu'un navigateur se connecte à un serveur WebHTTPS, le serveur présente un certificat permettant au navigateur de vérifier sa liste de sites fiablesCAs. Si le signataire est sur la liste ou s’il est accessible via une chaîne de confiance composée d’autres utilisateurs de confiance, le navigateur négocie un canal de données chiffrées rapide avec le serveur et charge la page.
Les certificats coûtent généralement de l’argent à cause travail impliqué dans la validation des requêtes, donc il est intéressant de comparer les prix. Quelques-uns CAs proposent des certificats de base gratuits. Le plus remarquable d'entre eux CAs est le projet Let's Encrypt
Si vous prévoyez d’offrir des services de qualité commerciale, AWS Certificate Manager est une bonne option.
La clé est l’élément sous-jacent du certificat d’hôte. À partir de 2019, le gouvernement
Important
Ces instructions relatives à l'acquisition d'un certificat d'hôte signé par une autorité de certification ne fonctionnent que si vous possédez un domaine enregistré et hébergéDNS.
Pour obtenir un certificat signé par une CA
-
Connectez-vous à votre instance et naviguez sur to /etc/pki/tls/private /. Il s'agit du répertoire dans lequel vous stockez la clé privée du serveurTLS. Si vous préférez utiliser une clé d'hôte existante pour générer leCSR, passez à l'étape 3. Pour plus d'informations sur la connexion à votre instance, voir Connexion à AL2 023 instances
-
(Facultatif) Générez une nouvelle clé privée. Voici quelques exemples de configurations de clés. Toutes les clés obtenues fonctionnent avec votre serveur web, mais elles diffèrent dans le degré et le type de sécurité qu’elles mettent en œuvre.
-
Exemple 1 : créer une clé d'RSAhôte par défaut. Le fichier obtenu est une clé RSA privée de 2048 bits.
custom.key
[ec2-user ~]$
sudo openssl genrsa -out custom.key
-
Exemple 2 : créer une RSA clé plus forte avec un module plus important. Le fichier obtenu est une clé privée de 4096 bitsRSA.
custom.key
[ec2-user ~]$
sudo openssl genrsa -out custom.key 4096
-
Exemple 3 : créer une RSA clé cryptée de 4096 bits avec protection par mot de passe. Le fichier obtenu est une clé RSA privée de 4096 bits chiffrée avec le AES chiffrement -128.
custom.key
Important
Le chiffrement de la clé offre une plus grande sécurité, mais comme une clé chiffrée nécessite un mot de passe, les services qui en dépendent ne peuvent pas démarrer automatiquement. Chaque fois que vous utilisez cette clé, vous devez fournir le mot de passe (dans l'exemple précédent, « abcde12345 ») via une connexion. SSH
[ec2-user ~]$
sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096
-
Exemple 4 : créer une clé à l'aide d'un code non RSA chiffré. RSAla cryptographie peut être relativement lente en raison de la taille de ses clés publiques, qui sont basées sur le produit de deux grands nombres premiers. Cependant, il est possible de créer des clés TLS qui utilisent des RSA non-chiffrements. Les clés basées sur les mathématiques des courbes elliptiques sont plus petites et plus rapides en termes de calcul, tout en offrant un niveau de sécurité équivalent.
[ec2-user ~]$
sudo openssl ecparam -name prime256v1 -out custom.key -genkey
Le résultat est une clé privée à courbe elliptique de 256 bits utilisant prime256v1, une « courbe nommée » prise en charge par Open. SSL Sa force cryptographique est légèrement supérieure à celle d'une RSA clé de 2048 bits, selon. NIST
Note
Tous n'CAsoffrent pas le même niveau de support pour les elliptic-curve-based clés que pour RSA les clés.
Assurez-vous que la nouvelle clé privée possède un critère de propriété et d’autorisations très restrictif (propriétaire=racine, groupe=racine, lecture/écriture pour propriétaire uniquement). Les commandes seraient similaires à celles illustrées dans l’exemple suivant.
[ec2-user ~]$
sudo chown root:root custom.key
[ec2-user ~]$
sudo chmod 600 custom.key
[ec2-user ~]$
ls -al custom.key
Les commandes ci-avant produisent le résultat suivant.
-rw------- root root custom.key
Après avoir créé et configuré une clé satisfaisante, vous pouvez créer uneCSR.
-
-
Créez un CSR en utilisant votre clé préférée. L’exemple suivant utilise
custom.key
.[ec2-user ~]$
sudo openssl req -new -key custom.key -out csr.pem
Ouvrir SSL ouvre une boîte de dialogue et vous invite à saisir les informations indiquées dans le tableau suivant. Tous les champs à l’exception de Common Name sont facultatifs pour un certificat d’hôte basique avec validation de domaine.
Nom Description Exemple Nom du pays ISOAbréviation à deux lettres de votre pays. US (=Etats-Unis) Nom de l’état ou de la province Nom de l’état ou de la province où votre organisation se situe. Ce nom ne peut pas être abrégé. Washington Nom de la localité L’emplacement de votre organisation, comme une ville. Seattle Nom de l’organisation Nom légal complet de votre organisation. N’abrégez pas le nom de votre organisation. Exemple d’entreprise Nom de l’unité d’organisation Informations supplémentaires sur l’organisation, s’il y en a. Exemple de service Nom commun Cette valeur doit correspondre exactement à l’adresse web que les utilisateurs saisiront dans un navigateur, selon vous. Il s’agit généralement d’un nom de domaine avec un nom d’hôte ou un alias préfixé sous la forme
www.example.com
. Lors des tests effectués avec un certificat auto-signé et en l'absence de DNS résolution, le nom commun peut être composé uniquement du nom d'hôte. CAsproposent également des certificats plus chers qui acceptent des noms génériques tels que.*.example.com
www.exemple.com Adresse e-mail L’adresse e-mail de l’administrateur du serveur. quelquun@exemple.com Enfin, Open vous SSL invite à saisir un mot de passe de défi facultatif. Ce mot de passe s'applique uniquement aux transactions entre vous CSR et votre autorité de certification. Suivez donc les recommandations de l'autorité de certification à ce sujet et concernant l'autre champ facultatif, le nom de l'entreprise facultatif. Le mot de passe de CSR défi n'a aucun effet sur le fonctionnement du serveur.
Le fichier obtenu
csr.pem
contient votre clé publique, la signature numérique de votre clé publique et les métadonnées que vous avez saisies. -
Soumettez-les CSR à une autorité de certification. Cela consiste généralement à ouvrir votre CSR fichier dans un éditeur de texte et à en copier le contenu dans un formulaire Web. À ce stade, il peut vous être demandé de fournir un ou plusieurs noms alternatifs de sujet (SANs) à placer sur le certificat. Si
www.example.com
c'est le nom courant, alorsexample.com
ce serait bienSAN, et vice versa. Un visiteur de votre site qui saisit l’un de ces noms devrait bénéficier d’une connexion sans erreur. Si votre formulaire Web CA le permet, incluez le nom commun dans la liste desSANs. Certains l'CAsincluent automatiquement.Une fois que votre demande a été approuvée, vous recevrez un nouveau certificat d’hôte signé par l’autorité de certification. Il se peut que l’on vous demande également de télécharger un fichier de certificat intermédiaire qui contient des certificats supplémentaires nécessaires pour compléter la chaîne de confiance de l’autorité de certification.
Note
Votre autorité de certification peut vous envoyer des fichiers sous différents formats en fonction des finalités recherchées. Pour ce didacticiel, vous ne devez utiliser qu'un fichier de certificat au PEM format généralement (mais pas toujours) marqué d'une extension de
.crt
fichier.pem
or. Si vous ne savez pas quel fichier utiliser, ouvrez les fichiers dans un éditeur de texte et recherchez celui qui contient un ou plusieurs blocs commençant par la ligne suivante.- - - - -BEGIN CERTIFICATE - - - - -
Le fichier doit également se terminer par la ligne suivante.
- - - -END CERTIFICATE - - - - -
Vous pouvez également tester le fichier dans la ligne de commande, comme suit.
[ec2-user certs]$
openssl x509 -in
certificate.crt
-textVérifiez que ces lignes apparaissent dans le fichier. N’utilisez pas de fichiers se terminant par
.p7b
,.p7c
ou autres extensions similaires. -
Placez le nouveau certificat signé par une CA et les certificats intermédiaires dans le répertoire
/etc/pki/tls/certs
.Note
Il existe plusieurs méthodes pour télécharger votre nouveau certificat sur votre EC2 instance, mais la méthode la plus simple et la plus informative consiste à ouvrir un éditeur de texte (par exemple, vi, nano ou bloc-notes) à la fois sur votre ordinateur local et sur votre instance, puis à copier-coller le contenu du fichier entre eux. Vous devez disposer des autorisations root [sudo] pour effectuer ces opérations sur l'EC2instance. Vous voyez ainsi immédiatement s’il existe des problèmes d’autorisation ou de chemin d’accès. Veillez toutefois à ne pas d’ajouter des lignes supplémentaires lors de la copie du contenu, ou à les modifier de quelque façon.
Depuis le
/etc/pki/tls/certs
répertoire, vérifiez que les paramètres de propriété, de groupe et d'autorisation du fichier correspondent aux valeurs par défaut très restrictives AL2 023 (owner=root, group=root, lecture/écriture pour le propriétaire uniquement). L’exemple suivant illustre les commandes à utiliser.[ec2-user certs]$
sudo chown root:root custom.crt
[ec2-user certs]$
sudo chmod 600 custom.crt
[ec2-user certs]$
ls -al custom.crt
Ces commandes devraient générer le résultat suivant.
-rw------- root root custom.crt
Les autorisations pour le fichier de certificat intermédiaire sont moins contraignantes (propriétaire=racine, groupe=racine, le propriétaire peut écrire, le groupe peut lire, tout le monde peut lire). L’exemple suivant illustre les commandes à utiliser.
[ec2-user certs]$
sudo chown root:root intermediate.crt
[ec2-user certs]$
sudo chmod 644 intermediate.crt
[ec2-user certs]$
ls -al intermediate.crt
Ces commandes devraient générer le résultat suivant.
-rw-r--r-- root root intermediate.crt
-
Placez la clé privée que vous avez utilisée pour la créer CSR dans le
/etc/pki/tls/private/
répertoire.Note
Il existe plusieurs méthodes pour télécharger votre clé personnalisée sur votre EC2 instance, mais la méthode la plus simple et la plus informative consiste à ouvrir un éditeur de texte (par exemple, vi, nano ou bloc-notes) à la fois sur votre ordinateur local et sur votre instance, puis à copier-coller le contenu du fichier entre eux. Vous devez disposer des autorisations root [sudo] pour effectuer ces opérations sur l'EC2instance. Vous voyez ainsi immédiatement s’il existe des problèmes d’autorisation ou de chemin d’accès. Veillez toutefois à ne pas d’ajouter des lignes supplémentaires lors de la copie du contenu, ou à les modifier de quelque façon.
Depuis le
/etc/pki/tls/private
répertoire, utilisez les commandes suivantes pour vérifier que les paramètres de propriété, de groupe et d'autorisation du fichier correspondent aux valeurs par défaut très restrictives AL2 023 (owner=root, group=root, read/write pour le propriétaire uniquement).[ec2-user private]$
sudo chown root:root custom.key
[ec2-user private]$
sudo chmod 600 custom.key
[ec2-user private]$
ls -al custom.key
Ces commandes devraient générer le résultat suivant.
-rw------- root root custom.key
-
Modifiez
/etc/httpd/conf.d/ssl.conf
pour refléter les nouveaux fichiers de certificat et de clé.-
Fournissez le chemin et le nom de fichier du certificat d’hôte signé par une CA dans la directive
SSLCertificateFile
d’Apache :SSLCertificateFile /etc/pki/tls/certs/custom.crt
-
Si vous avez reçu un fichier de certificat intermédiaire (
intermediate.crt
dans cet exemple), indiquez son nom correct de chemin et de fichier à l’aide de la directiveSSLCACertificateFile
d’Apache :SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
Note
Certains CAs combinent le certificat hôte et les certificats intermédiaires dans un seul fichier, ce qui rend la
SSLCACertificateFile
directive inutile. Consultez les instructions fournies par votre autorité de certification. -
Fournissez le chemin et le nom de fichier de la clé privée (
custom.key
dans cet exemple) dans la directiveSSLCertificateKeyFile
d’Apache :SSLCertificateKeyFile /etc/pki/tls/private/custom.key
-
-
Enregistrez
/etc/httpd/conf.d/ssl.conf
et redémarrez Apache.[ec2-user ~]$
sudo systemctl restart httpd
-
Testez votre serveur en saisissant votre nom de domaine dans une URL barre de navigateur avec le préfixe
https://
. Votre navigateur devrait charger la page de test HTTPS sans générer d'erreurs.
Étape 3 : Tester et renforcer la configuration de sécurité
Une fois TLS que votre appareil est opérationnel et exposé au public, vous devez tester son niveau de sécurité réel. Cela est facile à faire en utilisant des services en ligne tels que SSLQualys Labs
Important
Le test concret est essentiel pour la sécurité de votre serveur. Les petites erreurs de configuration peuvent entraîner des failles de sécurité et des pertes de données. Comme les pratiques de sécurité recommandées changent constamment en réponse à la recherche et aux menaces émergentes, des audits de sécurité périodiques sont essentiels pour la bonne administration du serveur.
Sur le site SSLQualys Labswww.example.com
. Après environ deux minutes, vous recevrez une note (de A à F) pour votre site et une analyse détaillée des résultats. Le tableau suivant récapitule le rapport pour un domaine dont les paramètres sont identiques à ceux de la configuration Apache par défaut au AL2 023 et avec un certificat Certbot par défaut.
Score général | B |
Certificat | 100 % |
Support du protocole | 95 % |
Échange de clés | 70 % |
Force du chiffrement | 90 % |
Même si l’aperçu montre que la configuration est principalement sûre, le rapport détaillé indique plusieurs problèmes potentiels, répertoriés ici dans l’ordre de gravité :
✗ Le RC4 chiffrement est compatible avec certains anciens navigateurs. Un chiffrement est le noyau mathématique d'un algorithme de chiffrement. RC4, un algorithme de chiffrement rapide utilisé pour chiffrer les TLS flux de données, est connu pour présenter plusieurs faiblesses graves.
✗ Les anciennes TLS versions sont prises en charge. La configuration prend en charge la TLS version 1.0 (déjà obsolète) et la TLS version 1.1 (sur le point de devenir obsolète). Seule la TLS version 1.2 a été recommandée depuis 2018.
✗ La confidentialité persistante n’est pas entièrement prise en charge. La confidentialité persistante
Pour corriger et pérenniser la configuration TLS
-
Ouvrez le fichier de configuration
/etc/httpd/conf.d/ssl.conf
dans un éditeur de texte et mettez en commentaire la ligne suivante en saisissant « # » au début de la ligne.#SSLProtocol all -SSLv3
-
Ajoutez la directive suivante :
#SSLProtocol all -SSLv3 SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
Cette directive désactive explicitement les SSL versions 2 et 3, ainsi que TLS les versions 1.0 et 1.1. Le serveur refuse désormais d'accepter les connexions chiffrées avec des clients utilisant autre chose que la TLS version 1.2. La formulation des commentaires dans la directive indique plus clairement, à un lecteur humain, ce pour quoi le serveur est configuré.
Note
La désactivation des TLS versions 1.0 et 1.1 de cette manière empêche un petit pourcentage de navigateurs Web obsolètes d'accéder à votre site.
Pour modifier la liste des chiffrements autorisés
-
Dans le fichier de configuration
/etc/httpd/conf.d/ssl.conf
, recherchez la section avec la directiveSSLCipherSuite
et mettez en commentaire la ligne existante en saisissant « # » au début de la ligne.#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
-
Spécifiez explicitement des suites de chiffrement et un ordre de chiffrement qui donnent la priorité à la confidentialité persistante et évitent les chiffrements peu sûrs. La
SSLCipherSuite
directive utilisée ici est basée sur les résultats du générateur de SSL configuration Mozilla, qui adapte une TLS configuration aux logiciels spécifiques exécutés sur votre serveur. Déterminez d'abord vos SSL versions d'Apache et d'Open en utilisant le résultat des commandes suivantes. [ec2-user ~]$
yum list installed | grep httpd
[ec2-user ~]$
yum list installed | grep openssl
Par exemple, si les informations renvoyées sont Apache 2.4.34 et Open SSL 1.0.2, nous les saisissons dans le générateur. Si vous choisissez le modèle de compatibilité « moderne », il crée une directive
SSLCipherSuite
qui applique la sécurité de façon stricte, tout en étant compatible avec la plupart des navigateurs. Si votre logiciel ne prend pas en charge la configuration moderne, vous pouvez mettre à jour le logiciel ou choisir la configuration « intermédiaire ».SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
Les chiffrements sélectionnés ont ECDHEdans leur nom l'abréviation de Elliptic Curve Diffie-Hellman Ephemeral. Le terme ephemeral indique la confidentialité persistante. En tant que sous-produit, ces chiffrements ne sont pas compatibles. RC4
Nous vous recommandons d’utiliser une liste explicite de chiffrements au lieu de compter sur les valeurs par défaut ou les directives succinctes dont le contenu n’est pas visible.
Copiez la directive générée dans
/etc/httpd/conf.d/ssl.conf
.Note
Même si la directive est affichée ici sur plusieurs lignes afin d’être plus lisible, elle doit être sur une seule ligne lorsqu’elle est copiée dans
/etc/httpd/conf.d/ssl.conf
avec un point (pas d’espace) entre les noms des chiffrements. -
En dernier lieu, supprimez la mise en commentaire de la ligne suivante en retirant le « # » au début de la ligne.
#SSLHonorCipherOrder on
Cette directive force le serveur à préférer les chiffrements de niveau élevé notamment (dans ce cas) ceux qui prennent en charge la confidentialité persistante. Avec cette directive activée, le serveur essaie d’établir une connexion très sécurisée avant d’avoir recours aux chiffrements autorisés dotés d’une sécurité moindre.
Après avoir terminé ces deux procédures, enregistrez les modifications dans /etc/httpd/conf.d/ssl.conf
et redémarrez Apache.
Si vous testez à nouveau le domaine sur SSLQualys Labs
Score général | A |
Certificat | 100 % |
Support du protocole | 100 % |
Échange de clés | 90 % |
Force du chiffrement | 90 % |
Chaque mise à jour d'Open SSL introduit de nouveaux chiffrements et supprime le support des anciens. Conservez votre instance EC2 AL2 023 up-to-date, surveillez les annonces de sécurité d'Open SSL
Dépannage
-
Mon serveur Web Apache ne démarre pas si je ne fournis pas un mot de passe
Il s’agit du comportement attendu si vous avez installé une clé de serveur privée chiffrée et protégée par mot de passe.
Vous pouvez supprimer l’obligation de chiffrement et de mot de passe de la clé. En supposant qu'une RSA clé privée chiffrée est appelée
custom.key
dans le répertoire par défaut et que son mot de passe est le casabcde12345
, exécutez les commandes suivantes sur votre EC2 instance pour générer une version non chiffrée de la clé.[ec2-user ~]$
cd /etc/pki/tls/private/
[ec2-user private]$
sudo cp custom.key custom.key.bak
[ec2-user private]$
sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt
[ec2-user private]$
sudo mv custom.key.nocrypt custom.key
[ec2-user private]$
sudo chown root:root custom.key
[ec2-user private]$
sudo chmod 600 custom.key
[ec2-user private]$
sudo systemctl restart httpd
Apache devrait maintenant démarrer sans vous demander de fournir un mot de passe.
-
J’obtiens des erreurs lorsque j’exécute sudo dnf install -y mod_ssl.
Lorsque vous installez les packages requis pourSSL, des erreurs similaires aux suivantes peuvent s'afficher.
Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64 Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64
Cela signifie généralement que votre EC2 instance n'exécute pas la version AL2 023. Ce tutoriel ne prend en charge que les instances fraîchement créées à partir d'un AL2 023 AMI officiel.