bg-tutorials

Comment installer un certificat SSL sur CentOS

Dans ce guide, vous apprendrez comment installer un certificat SSL sur CentOS et ses successeurs de la famille RHEL (AlmaLinux, Rocky Linux et CentOS Stream) en utilisant le serveur web Apache httpd.

Nous avons également enregistré une vidéo qui vous guide à travers tout le processus. Si vous préférez la version texte, continuez votre lecture ci-dessous.


Générer un code CSR

Lorsque vous demandez un certificat SSL, vous générez d’abord une CSR (Certificate Signing Request) et l’envoyez à l’autorité de certification. La CSR est un bloc de texte contenant vos coordonnées et les détails de votre domaine, associé à une clé privée créée en même temps. Vous avez deux options :

Soumettez la CSR à l’autorité de certification lors de la commande. Une fois que la CA l’a validée et a émis votre certificat, poursuivez avec l’installation ci-dessous.

Installer un certificat SSL sur CentOS / RHEL (Apache)

À noter concernant les versions : CentOS Linux 8 a atteint sa fin de vie le 31 décembre 2021, et CentOS Linux 7 a atteint sa fin de vie le 30 juin 2024. Pour un environnement de production, utilisez plutôt une distribution de la famille RHEL prise en charge : RHEL 8/9/10, AlmaLinux, Rocky Linux, ou CentOS Stream. Elles partagent toutes la même structure Apache httpd, donc les étapes ci-dessous s’appliquent à chacune d’entre elles.

Avant de commencer

Après la validation, votre autorité de certification vous envoie par e-mail les fichiers du certificat. Assurez-vous d’avoir ces trois fichiers distincts prêts :

  • yourdomain.crt, votre certificat SSL principal.
  • yourdomain.ca-bundle, les certificats intermédiaires (le CA bundle).
  • yourdomain.key, la clé privée que vous avez générée avec la CSR.

Important : n’incluez jamais la clé privée dans la chaîne de certificats. La clé reste dans son propre fichier, lisible uniquement par root.

Étape 1 : Installer le support TLS (mod_ssl)

Installez mod_ssl, qui ajoute le support TLS à Apache et dépose une configuration TLS par défaut dans /etc/httpd/conf.d/ssl.conf :

sudo dnf install -y mod_ssl

Sur les systèmes plus anciens qui utilisent encore le gestionnaire de paquets yum, exécutez plutôt sudo yum install -y mod_ssl.

Étape 2 : Placer vos fichiers SSL

Copiez la clé privée dans /etc/pki/tls/private/ et verrouillez ses permissions afin que seul root puisse la lire :

sudo cp yourdomain.key /etc/pki/tls/private/
sudo chown root:root /etc/pki/tls/private/yourdomain.key
sudo chmod 600 /etc/pki/tls/private/yourdomain.key

Ensuite, créez le fichier de chaîne complète en concaténant votre certificat et le CA bundle, et placez-le dans /etc/pki/tls/certs/ :

cat yourdomain.crt yourdomain.ca-bundle 
  | sudo tee /etc/pki/tls/certs/yourdomain-fullchain.crt > /dev/null

Le fichier de chaîne complète doit contenir uniquement le certificat public et la chaîne intermédiaire, jamais la clé privée.

Étape 3 : Configurer l’hôte virtuel TLS d’Apache

Vous pouvez soit modifier le fichier par défaut /etc/httpd/conf.d/ssl.conf créé par mod_ssl, soit (méthode plus propre) créer un fichier dédié à votre site, par exemple /etc/httpd/conf.d/yourdomain.conf. Ouvrez-le avec un éditeur de texte :

sudo nano /etc/httpd/conf.d/yourdomain.conf

Ajoutez un hôte virtuel sur le port 80 qui redirige tout le trafic vers HTTPS, suivi de l’hôte virtuel sécurisé du port 443 qui contient vos directives SSL :

<VirtualHost *:80>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  Redirect permanent / https://yourdomain.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  DocumentRoot /var/www/yourdomain.com

  SSLEngine on
  SSLCertificateFile    /etc/pki/tls/certs/yourdomain-fullchain.crt
  SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
</VirtualHost>
  • SSLCertificateFile, votre fichier de chaîne complète (certificat + intermédiaires). Sur Apache 2.4.8 et versions ultérieures, cette directive unique remplace la directive obsolète SSLCertificateChainFile.
  • SSLCertificateKeyFile, la clé privée que vous avez créée avec la CSR.

Remarque concernant l’hôte par défaut : le fichier /etc/httpd/conf.d/ssl.conf de mod_ssl fournit son propre <VirtualHost _default_:443> avec un certificat auto-signé. Lorsque vous ajoutez un hôte *:443 spécifique à votre site comme ci-dessus, les requêtes correspondant à votre ServerName utilisent votre certificat, mais les requêtes HTTPS non correspondantes (par exemple, en accédant au serveur via son adresse IP) continuent de basculer vers cet hôte par défaut auto-signé. Si vous ne souhaitez pas ce comportement de repli, commentez le bloc <VirtualHost _default_:443> dans ssl.conf ou pointez-le vers votre propre certificat.

Remarque sur le renforcement TLS : Apache sur RHEL 8 et versions ultérieures suit la politique cryptographique du système, qui désactive déjà les protocoles obsolètes. Pour définir la politique sur l’ensemble du serveur, exécutez sudo update-crypto-policies --set DEFAULT (ou FUTURE pour des paramètres plus stricts). Si vous préférez fixer les protocoles par hôte virtuel, ajoutez SSLProtocol -all +TLSv1.2 +TLSv1.3 à l’intérieur du bloc du port 443.

Étape 4 : Tester votre configuration Apache

Vérifiez toujours la syntaxe avant de recharger, car une simple faute de frappe peut mettre le site hors ligne :

sudo apachectl configtest

Vous devriez voir Syntax OK. (La commande sudo httpd -t fait la même chose.) Corrigez toute erreur signalée avant de continuer.

Étape 5 : Redémarrer Apache

Appliquez les modifications en rechargeant le service httpd (un rechargement active la nouvelle configuration sans interrompre les connexions actives) :

sudo systemctl reload httpd

Si httpd n’était pas encore en cours d’exécution, démarrez-le avec sudo systemctl enable --now httpd. Votre site web devrait maintenant être en ligne via HTTPS. Pour vérifier le résultat et obtenir un rapport d’état instantané, utilisez notre SSL Checker.

Remarques pour les anciennes versions de CentOS (7 et antérieures)

CentOS Linux 7, 6 et 8 ont tous atteint leur fin de vie et ne reçoivent plus de mises à jour de sécurité ; migrez donc vers une distribution de la famille RHEL prise en charge dès que possible. Si vous devez travailler sur un serveur ancien, le processus est le même que ci-dessus, avec deux différences :

  • Gestionnaire de paquets : CentOS 7 et 6 utilisent yum au lieu de dnf. Vérifiez si mod_ssl est déjà installé avec rpm -qa | grep mod_ssl, et si ce n’est pas le cas, installez-le avec sudo yum install -y mod_ssl.
  • Apache antérieur à 2.4.8 : seules les versions très anciennes précèdent 2.4.8. Dans ce cas, conservez le certificat et la chaîne dans des fichiers séparés et ajoutez une troisième directive, SSLCertificateChainFile, pointant vers le CA bundle (et non vers votre certificat) :
SSLCertificateFile      /etc/pki/tls/certs/yourdomain.crt
SSLCertificateKeyFile   /etc/pki/tls/private/yourdomain.key
SSLCertificateChainFile /etc/pki/tls/certs/yourdomain.ca-bundle

Sur Apache 2.4.8 et versions ultérieures (ce qui couvre toutes les versions actuellement prises en charge), utilisez plutôt la directive unique et plus simple SSLCertificateFile de chaîne complète, présentée à l’étape 3.

Où acheter un certificat SSL pour CentOS ?

Le meilleur endroit pour acheter un certificat SSL pour votre serveur CentOS est un revendeur SSL réputé comme SSL Dragon. Nos prix figurent parmi les plus bas du marché, et nous proposons régulièrement des remises et des offres avantageuses sur toute notre gamme de produits SSL, soutenues par un service client exceptionnel. Tous nos certificats sont compatibles avec CentOS et ses successeurs de la famille RHEL.

SSL Dragon prend en charge la sécurité de vos données sensibles, afin que votre site web ou votre entreprise puisse prospérer en ligne.

Questions fréquemment posées

Comment savoir si un certificat SSL est installé sur CentOS ?

Connectez-vous à votre site avec OpenSSL et lisez le certificat servi :
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Si un certificat est installé, cette commande affiche son émetteur et ses dates de validité. Pour inspecter à la place un fichier de certificat présent sur le disque, exécutez openssl x509 -text -noout -in certificate.crt. Vous pouvez également lister les hôtes virtuels actifs d’Apache avec sudo apachectl -S, ou ouvrir votre site dans un navigateur et vérifier le cadenas.

Où les certificats SSL sont-ils stockés sur CentOS ?

Par convention, les certificats vont dans /etc/pki/tls/certs/ et les clés privées dans /etc/pki/tls/private/. Ce sont les emplacements par défaut de la famille RHEL ; vous pouvez utiliser d’autres emplacements tant que votre hôte virtuel les référence.

Où se trouve la configuration SSL d’Apache sur CentOS ?

Le module TLS installe ses paramètres par défaut dans /etc/httpd/conf.d/ssl.conf, et la configuration principale d’Apache se trouve dans /etc/httpd/conf/httpd.conf. Vous pouvez ajouter vos hôtes virtuels dans ssl.conf, mais il est plus propre de créer un fichier par site tel que /etc/httpd/conf.d/yourdomain.conf. Tout fichier .conf présent dans /etc/httpd/conf.d/ est chargé automatiquement. Les journaux Apache se trouvent dans /var/log/httpd/.

Dois-je fusionner le certificat et le CA bundle sur CentOS ?

Sur Apache 2.4.8 et versions ultérieures (toutes les versions de la famille RHEL actuellement prises en charge), oui : concaténez votre certificat et le CA bundle en un seul fichier de chaîne complète et faites pointer SSLCertificateFile vers celui-ci. La directive distincte SSLCertificateChainFile est obsolète et n’est nécessaire que sur les versions d’Apache antérieures à 2.4.8.

Comment installer OpenSSL sur CentOS ?

OpenSSL est préinstallé sur CentOS et sur toutes les autres grandes distributions Linux, vous n’avez donc généralement pas besoin de l’installer. S’il est absent, ajoutez-le avec sudo dnf install -y openssl (ou sudo yum install -y openssl sur CentOS 7 et versions antérieures). Découvrez-en davantage sur OpenSSL et ses lignes de commande.

En résumé

Installer un certificat SSL sur CentOS ou RHEL avec Apache consiste à installer mod_ssl, à placer votre clé privée et votre certificat de chaîne complète sous /etc/pki/tls/, à configurer le bloc <VirtualHost *:443> dans /etc/httpd/conf.d/, à tester avec sudo apachectl configtest, puis à recharger avec sudo systemctl reload httpd. Besoin d’un certificat au préalable ? Parcourez nos certificats SSL.

Economisez 10% sur les certificats SSL en commandant aujourd’hui!

Émission rapide, cryptage puissant, confiance de 99,99 % du navigateur, assistance dédiée et garantie de remboursement de 25 jours. Code de coupon: SAVE10

Image détaillée d'un dragon en vol
Rédigé par

Rédacteur de contenu expérimenté spécialisé dans les certificats SSL. Transformer des sujets complexes liés à la cybersécurité en un contenu clair et attrayant. Contribuer à l'amélioration de la sécurité numérique par des récits percutants.