Logo
Installer un certificat auto-signé OpenSSL avec nginx
Overview
Installer un certificat auto-signé OpenSSL avec nginx

Installer un certificat auto-signé OpenSSL avec nginx

22 octobre 2021
12 janvier 2025
3 min de lecture
Disponible en :
Un problème avec sudo ?
Danger (N'utilisez pas le compte root)

Si vous configurez votre serveur directement en tant que root, n’oubliez pas de retirer sudo de chaque commande.
Si vous définissez un mot de passe pour le compte root, la commande sudo ne sera pas acceptée. Connectez-vous directement en tant que root pour exécuter les commandes.
Vous pouvez aussi réinstaller votre système en laissant le mot de passe root vide lors de l’installation.
sudo s’installera et fonctionnera correctement.

Générer le certificat et la clé

Tip (Sécurité recommandée)

Il est recommandé d’utiliser ed25519 qui correspond au standard de sécurité actuel.
Cependant, il n’est pas compatible partout, notamment sur les systèmes legacy.
Dans ce cas, RSA est utilisé, il est préférable de définir une longueur de clé importante.

sudo openssl req -x509 -days 365 -out mycert.crt -nodes -newkey rsa:4096 -keyout mykey.key

↩️ Remplissez les différentes informations du certificat

Generating a RSA private key
..................................+++++
........................................................+++++
writing new private key to 'mykey.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:RHONE
Locality Name (eg, city) []:maville
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xsec
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:web.it.fr
Email Address []:test@gmail.com
Tip

Le Common Name doit être renseigné avec le nom de domaine !

OpenSSL a généré le certificat et la clé dans le répertoire où vous vous trouvez au moment où vous avez saisi la commande.
Vous pouvez les déplacer/renommer comme bon vous semble.

Éditer le fichier de configuration nginx

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
  • En haut du fichier se trouve un bloc de configuration serveur.
    Il écoute sur le port 80:HTTP qui pointe vers /var/www/html puis une page d’index définie dans index ligne 5.

  • Comme nous allons ajouter un bloc de configuration serveur qui écoute sur le port 443:HTTPS, nous devons le modifier pour éviter les conflits :

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
  • Ligne 5 Redirige les requêtes du port 80 vers le port 443.

:icon-file-symlink-file: Ajoutez la configuration SSL à la fin du fichier

server {
listen 443 ssl;
server_name _;
root /var/www/html;
ssl_certificate /var/www/sites/client1/mycert.crt;
ssl_certificate_key /var/www/sites/client1/mykey.key;
index index.html index.htm index.nginx-debian.html;
}
  • Ligne 4 Remplacez le chemin par le vôtre.
  • Ligne 5-6 Remplacez les chemins par les vôtres.

Le fichier de configuration ressemble alors à ceci (sans les commentaires) :

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name _;
root /var/www/html;
ssl_certificate /var/www/sites/client1/mycert.crt;
ssl_certificate_key /var/www/sites/client1/mykey.key;
index index.html index.htm index.nginx-debian.html;
}

Redémarrer nginx

sudo service nginx restart
Tip

Vous pouvez maintenant consulter votre site web avec votre certificat auto-signé (https://monsite.local par exemple).