Recherche de site Web

Comment créer un certificat SSL auto-signé local sur CentOS 8


SSL (Secure Socket Layer) et sa version améliorée, TLS (Transport Socket Layer), sont des protocoles de sécurité qui sont utilisés pour sécuriser le trafic Web envoyé depuis le navigateur Web d'un client vers un serveur Web.

Un certificat SSL est un certificat numérique qui crée un canal sécurisé entre le navigateur d'un client et un serveur Web. Ce faisant, les données sensibles et confidentielles telles que les données de carte de crédit, les identifiants de connexion et d'autres informations hautement privées sont cryptées, empêchant les pirates informatiques d'écouter et de voler vos informations.

Qu'est-ce qu'un certificat SSL auto-signé ?

Un certificat SSL auto-signé, contrairement aux autres certificats SSL qui sont signés et approuvés par une autorité de certification (CA), est un certificat signé par un individu qui en est propriétaire.

Il est totalement gratuit d'en créer un et constitue un moyen peu coûteux de crypter votre serveur Web hébergé localement. Cependant, l'utilisation d'un certificat SSL auto-signé est fortement déconseillée dans les environnements de production pour les raisons suivantes :

  1. Puisqu'il n'est pas signé par une autorité de certification, un certificat SSL auto-signé génère des alertes sur les navigateurs Web avertissant les utilisateurs des risques potentiels à venir s'ils décident de continuer. Ces alertes ne sont pas souhaitées et dissuaderont les utilisateurs de visiter votre site Web, entraînant potentiellement une baisse du trafic Web. Pour contourner ces alertes, les organisations encouragent généralement leurs employés à simplement ignorer les alertes et à continuer. Cela peut engendrer une habitude dangereuse chez les utilisateurs qui pourraient décider de continuer à ignorer ces alertes sur d'autres sites en ligne, devenant ainsi potentiellement victimes de sites de phishing.
  2. Les certificats auto-signés ont un niveau de sécurité faible car ils implémentent des technologies de chiffrement et de hachage de bas niveau. Ainsi, le niveau de sécurité peut ne pas être à la hauteur des politiques de sécurité standard.
  3. De plus, les fonctions d’infrastructure à clé publique (PKI) ne sont pas prises en charge.

Cela dit, l'utilisation d'un certificat SSL auto-signé n'est pas une mauvaise idée pour tester des services et des applications sur une machine locale qui nécessite un cryptage TLS/SSL.

Dans ce guide, vous apprendrez comment installer un certificat SSL auto-signé local sur le serveur Web Apache localhost sur un système de serveur CentOS 8.

Conditions préalables:

Avant de commencer, assurez-vous que vous disposez des exigences de base suivantes :

  1. Une instance du serveur CentOS 8.
  2. Serveur Web Apache installé sur le serveur
  3. Un nom d'hôte déjà configuré et défini dans le fichier /etc/hosts. Pour ce guide, nous allons utiliser tecmint.local un nom d'hôte pour notre serveur.

Étape 1 : Installation de Mod_SSL sur CentOS

1. Pour commencer, vous devez vérifier que le serveur Web Apache est installé et exécuté.

sudo systemctl status httpd

Voici le résultat attendu.

Si le serveur Web n'est pas en cours d'exécution, vous pouvez le démarrer et l'activer au démarrage à l'aide de la commande.

sudo systemctl start httpd
sudo systemctl enable httpd

Vous pouvez ensuite confirmer si Apache est opérationnel.

2. Pour activer l'installation et la configuration du certificat SSL auto-signé local, le package mod_ssl est requis.

sudo dnf install mod_ssl

Une fois installé, vous pouvez vérifier son installation en exécutant.

sudo rpm -q mod_ssl

Assurez-vous également que le package OpenSSL est installé (OpenSSL est installé par défaut dans CentOS 8).

sudo rpm -q openssl 

Étape 2 : Créer un certificat SSL auto-signé local pour Apache

3. Avec le serveur Web Apache et tous les prérequis vérifiés, vous devez créer un répertoire dans lequel les clés cryptographiques seront stockées.

Dans cet exemple, nous avons créé un répertoire dans /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Créez maintenant la clé et le fichier du certificat SSL local à l'aide de la commande :

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Voyons ce que représentent réellement certaines des options de la commande :

  • req -x509 – Cela indique que nous utilisons la demande de signature de certificat (CSR) x509.
  • -nodes – Cette option demande à OpenSSL d'ignorer le chiffrement du certificat SSL à l'aide d'une phrase secrète. L'idée ici est de permettre à Apache de pouvoir lire le fichier sans aucune intervention de l'utilisateur, ce qui ne serait pas possible si une phrase secrète était fournie.
  • -newkey rsa:2048 – Cela indique que nous souhaitons créer simultanément une nouvelle clé et un nouveau certificat. La partie rsa:2048 implique que nous souhaitons créer une clé RSA de 2048 bits.
  • -keyout – Cette option spécifie où stocker le fichier de clé privée généré lors de sa création.
  • -out – L'option spécifie où placer le certificat SSL créé.

Étape 3 : Installer le certificat SSL auto-signé local sur Apache

4. Après avoir généré le fichier de certificat SSL, il est maintenant temps d'installer le certificat en utilisant les paramètres du serveur Web Apache. Ouvrez et modifiez le fichier de configuration /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Assurez-vous d'avoir les lignes suivantes entre les balises d'hôte virtuel.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Enregistrez et quittez le fichier. Pour que les modifications soient appliquées, redémarrez Apache à l'aide de la commande :

sudo systemctl restart httpd

5. Pour que les utilisateurs externes puissent accéder à votre serveur, vous devez ouvrir le port 443 via le pare-feu comme indiqué.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Étape 3 : Test du certificat SSL auto-signé local sur Apache

Une fois toutes les configurations en place, lancez votre navigateur et parcourez l’adresse de votre serveur en utilisant l’adresse IP ou le nom de domaine du serveur en utilisant le protocole https.

Pour rationaliser les tests, vous pouvez envisager de rediriger le protocole HTTP vers HTTPS sur le serveur Web Apache. Ainsi, chaque fois que vous parcourez le domaine en HTTP brut, il sera automatiquement redirigé vers le protocole HTTPS.

Alors parcourez le domaine ou l’IP de votre serveur

https://domain_name/

Vous recevrez une alerte vous informant que la connexion n'est pas sécurisée comme indiqué. Cela variera d'un navigateur à l'autre. Comme vous pouvez le deviner, l'alerte est due au fait que le certificat SSL n'est pas signé par l'autorité de certification et que le navigateur l'enregistre et signale que le certificat n'est pas fiable.

Pour accéder à votre site Web, cliquez sur l'onglet « Avancé » comme indiqué ci-dessus :

Ensuite, ajoutez l'exception au navigateur.

Enfin, rechargez votre navigateur et constatez que vous pouvez désormais accéder au serveur, même s'il y aura un avertissement sur la barre d'URL indiquant que le site n'est pas entièrement sécurisé pour la même raison que le certificat SSL est auto-signé et non signé par le Autorité de certification.

Nous espérons que vous pourrez désormais créer et installer un certificat SSL auto-signé sur le serveur Web Apache localhost sur CentOS 8.