Pour tout propriétaire d’entreprise en ligne, il est crucial de garantir une communication sécurisée entre votre serveur et les applications client. Une façon d’y parvenir est d’installer un certificat SSL. Un certificat SSL, avec les bonnes configurations, permet une communication sur les protocoles TLS ou SSL, offrant ainsi un environnement sécurisé pour vos utilisateurs.
Dans cet article, nous vous guiderons à travers le processus d’installation d’un certificat SSL auto-signé sur Ubuntu 20.04 LTS en utilisant OpenSSL. Nous vous montrerons également comment configurer les hôtes virtuels d’Apache et les blocs de serveur de Nginx pour imposer une communication sur les protocoles TLS/SSL.
Étape 1 : Création du répertoire et génération du certificat SSL
La première étape consiste à créer un répertoire pour stocker le certificat SSL. Ouvrez un terminal et exécutez la commande suivante :
sudo mkdir /etc/secure/
Ensuite, générez le certificat SSL auto-signé en exécutant la commande suivante :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/secure/example.com.key -out /etc/secure/example.com.crt
La commande openssl
est utilisée pour générer le certificat SSL auto-signé. Voici une explication des paramètres utilisés :
req
: Spécifie que nous utilisons une CSR X.509 (Demande de signature de certificat).-x509
: Spécifie que nous voulons un certificat auto-signé au lieu d’une demande de signature de certificat.-nodes
: Permet de passer l’option de sécuriser le certificat auto-signé à l’aide d’une phrase secrète.-days
: Définit le nombre de jours de validité du certificat. Dans cet exemple, nous l’avons défini à 365 pour générer un certificat avec une validité d’un an.-newkey
: Génère une nouvelle clé et un nouveau certificat en utilisant RSA avec une longueur de clé de 2048 bits.-keyout
: Spécifie le chemin pour sauvegarder le fichier de clé.-out
: Spécifie le chemin pour sauvegarder le fichier de certificat.
Une fois la commande exécutée avec succès, OpenSSL générera la clé privée et le certificat à /etc/secure/example.com.key
et /etc/secure/example.com.crt
, respectivement.
Étape 2 : Configuration de l’hôte virtuel Apache
Si vous utilisez Apache comme serveur web, suivez ces étapes pour configurer l’hôte virtuel et imposer une communication sur les protocoles TLS/SSL.
- Ouvrez le fichier de configuration de l’hôte virtuel à l’aide d’un éditeur de texte. Par exemple :
sudo nano /etc/apache2/sites-available/example.com.conf
- À l’intérieur du fichier, vous verrez la configuration pour un hôte virtuel normal sans SSL. Il devrait ressembler à ceci :
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin admin@example.com DocumentRoot /var/www/example.com/html <Directory /var/www/example.com/html> Options -Indexes +FollowSymLinks DirectoryIndex index.html AllowOverride All Require all granted </Directory> ErrorLog /var/www/example.com/logs/error.log CustomLog /var/www/example.com/logs/access.log combined </VirtualHost>
- Maintenant, ajoutez une autre configuration d’hôte virtuel en utilisant le port 443 pour activer HTTPS. Ouvrez un nouveau fichier en utilisant la commande suivante :
sudo nano /etc/apache2/sites-available/example.com-ssl.conf
- À l’intérieur du fichier, ajoutez la configuration suivante :
<VirtualHost *:443> ServerName example.com ServerAlias www.example.com ServerAdmin admin@example.com DocumentRoot /var/www/example.com/html <Directory /var/www/example.com/html> Options -Indexes +FollowSymLinks DirectoryIndex index.php AllowOverride All Require all granted </Directory> ErrorLog /var/www/example.com/logs/error.log CustomLog /var/www/example.com/logs/access.log combined SSLEngine on SSLCertificateFile /etc/secure/example.com.crt SSLCertificateKeyFile /etc/secure/example.com.key </VirtualHost>
- Mettez à jour la configuration de l’hôte virtuel existant pour rediriger les requêtes HTTP vers HTTPS. Ouvrez le fichier à l’aide de la commande suivante :
sudo nano /etc/apache2/sites-available/example.com.conf
- À l’intérieur du fichier, ajoutez le bloc de configuration suivant à la fin :
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin admin@example.com DocumentRoot /var/www/example.com/html <Directory /var/www/example.com/html> Options -Indexes +FollowSymLinks DirectoryIndex index.html AllowOverride All Require all granted </Directory> ErrorLog /var/www/example.com/logs/error.log CustomLog /var/www/example.com/logs/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =example.com [OR] RewriteCond %{SERVER_NAME} =www.example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
- Sauvegardez et quittez l’éditeur de texte.
- Activez le nouvel hôte virtuel en exécutant la commande suivante :
sudo a2ensite example.com-ssl
- Activez les modules requis en exécutant les commandes suivantes :
sudo a2enmod rewrite sudo a2enmod ssl
- Enfin, redémarrez Apache pour que les modifications prennent effet :
sudo systemctl restart apache2
Étape 3 : Configuration du bloc de serveur Nginx
Si vous utilisez Nginx comme serveur web, suivez ces étapes pour configurer le bloc de serveur et imposer une communication sur les protocoles TLS/SSL.
- Ouvrez le fichier de configuration du bloc de serveur à l’aide d’un éditeur de texte. Par exemple :
sudo nano /etc/nginx/sites-available/example.com
- À l’intérieur du fichier, vous verrez la configuration pour un bloc de serveur normal sans SSL. Il devrait ressembler à ceci :
server { listen 80; server_name example.com www.example.com; location / { root /var/www/example.com/html; index index.html index.htm; try_files $uri $uri/ =404; } location ~ /\.ht { deny all; } }
- Mettez à jour la configuration du bloc de serveur pour rediriger les requêtes HTTP vers HTTPS et configurez le certificat et la clé SSL. Ouvrez un nouveau fichier en utilisant la commande suivante :
sudo nano /etc/nginx/sites-available/example.com
- À l’intérieur du fichier, remplacez la configuration existante par la suivante :
server { listen 80; server_name example.com www.example.com; location / { return 301 https://$host$request_uri; } } server { listen 443 ssl; server_name example.com www.example.com; location / { root /var/www/example.com/html; index index.html index.htm; try_files $uri $uri/ =404; } location ~ /\.ht { deny all; } ssl_certificate /etc/secure/example.com.crt; ssl_certificate_key /etc/secure/example.com.key; }
- Sauvegardez et quittez l’éditeur de texte.
- Rechargez Nginx pour appliquer les modifications :
sudo systemctl reload nginx
Félicitations ! Vous avez réussi à installer un certificat SSL auto-signé sur Ubuntu 20.04 LTS et à configurer les hôtes virtuels d’Apache ou les blocs de serveur de Nginx pour imposer une communication sur les protocoles TLS/SSL. Votre site web est maintenant plus sécurisé, offrant un environnement sûr pour vos utilisateurs.
Veuillez noter que les certificats SSL auto-signés peuvent montrer des avertissements de sécurité aux utilisateurs car ils ne sont pas reconnus par les autorités de certification de confiance. Ces certificats sont généralement utilisés pour des tests et des développements. Si vous avez besoin d’un certificat reconnu par des autorités de confiance, envisagez d’en obtenir un auprès de fournisseurs réputés comme Let’s Encrypt, Comodo ou VeriSign.
Si vous avez d’autres questions ou besoin d’aide, n’hésitez pas à contacter notre équipe chez Shape.host. Nous nous spécialisons dans la fourniture de solutions d’hébergement cloud fiables et sécurisées adaptées à vos besoins commerciaux.