Configurer un site intranet en https sur Nginx (AUTOSIGNE)

Objectif

L'objectif est de configurer un site intranet (avec vhost) sur Nginx, en utilisant ssl.

SSL exige qu'un certificat soit délivré par une autorité de certification.
Puisqu'il s'agît d'un site intranet, accessible uniquement sur le réseau de l'entreprise, plutôt que de nous adresser à une autorité de certification sur internet, nous allons nous-même créer notre propre autorité de certification pour nous délivrer un certificat à nous-même !

Pour ceux qui ne sont pas contumier de vi, utilisez nano à la place !


Etape 1 : s'identifier en root, installer nginx et openssl, activer ssl.

apt update && apt upgrade -y
apt install nginx -y
systemctl start nginx && systemctl enable nginx

Etape 2 : Créer notre propre Autorité de Certification (ca)

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl genrsa 4096 > ca.key
openssl req -new -x509 -days 365 -nodes -key ca.key > ca.crt

Etape 3 : Créer le certificat auto-signé

1) Créer la clé privée pour nginx :
Il y a 2 façons de faire. Soit vous stipulez un mot de passe lors de la création (ce qui vous posera problème dans certaines applications. Soit vous n'en créez pas :
- Avec mot de passe :

openssl genrsa -aes256 4096 > cleprivnginx.key

-(ou) Sans mot de passe (je vous suggère de mettre sans mot de passe pour la suite du tuto) :

openssl genrsa 4096 > cleprivnginx.key

2) Créer un certificat normal, qui servira de fichier de demande de signature à notre autorité :

openssl req -new -key cleprivnginx.key > demandesignature.csr

3) Faire signer notre demande de signature par notre propre autorité de certification (ca)

openssl x509 -req -in demandesignature.csr -out certifnginx.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 365

Nous aurons besoin des 2 fichiers suivants pour notre vhost :
- certifnginx.crt (le certificat autosigné)
- cleprivnginx.key (clé privée pour nginx)

Dernière étape très importante, modifier les permissions de vos clefs et certificats :
(à n'effectuer qu'après avoir tout généré !)

chmod -R 600 /etc/nginx/ssl

Etape 4 : créer (ou copier s'il est donné) le dossier du site (jesuissuper)

mkdir /var/www/jesuissuper
vi /var/www/jesuissuper/index.html

Etape 5 : le vhost.

cd /etc/nginx/sites-available/
vi jesuissuper.conf

# On édite le fichier, avec au moins les informations (dé-commentées) suivantes :

server {
    listen 10.10.10.210:443 ssl;
    server_name jesuissuper;
    root /var/www/jesuissuper;
    ssl_certificate /etc/nginx/ssl/certifnginx.crt;
    ssl_certificate_key /etc/nginx/ssl/cleprivnginx.key;
}

On enregistre et on quitte


Etape 6 : activer la configuration du vhost

ln -s /etc/nginx/sites-available/jesuissuper.conf /etc/nginx/sites-enabled/

Etape 7 : redémarrage d'nginx

systemctl restart nginx

Etape 8 : l'enregistrement DNS.

Faîtes un enregistrement DNS sur votre hôte.

cas 1 : le PC est sur Linux :

vi /etc/hosts
IP-DU-SERVEUR-WEB      jesuissuper

cas 2 : le PC est sous windows.
modifier le fichier hosts (cliquez ici pour accéder à la procédure), y ajouter la même ligne qu'au-dessus

Etape 9 : Importer le certificat d'autorité sur votre navigateur Firefox : ca.crt sur votre PC
(via scp ou winscp)
Ouvrez les certificats Utilisateurs Windows et importez le ca.crt puis redémarrez Windows.


⬆️ Retour en haut de la page