Configuration Nginx SSL dans Linux

Configuration Nginx SSL dans Linux

SSL (signifie Secure Socket Layer) est un protocole Web qui rend sécurisé le trafic entre le serveur et le client en le cryptant. Le serveur et les clients transmettent en toute sécurité le trafic sans que le risque de communication ne soit interprété par des tiers. Il aide également le client à vérifier l'identité du site Web avec lequel elle communique.

Dans cet article, nous décrire comment configurer SSL pour Nginx. Nous démontrerons la procédure en utilisant le certificat auto-signé. Un certificat auto-signé ne crypte que la connexion mais ne valide pas l'identité de votre serveur. Par conséquent, il ne doit être utilisé que pour les environnements de test ou pour les services LAN internes. Pour l'environnement de production, il est préférable d'utiliser les certificats signés par CA (Certificate Authority).

Conditions préalables

Pour ce post, vous devriez avoir les pré-requis suivantes:

  • Nginx déjà installé sur votre machine
  • Bloc de serveur configuré pour votre domaine
  • Utilisateur avec privilèges sudo

La procédure expliquée ici a été effectuée sur Debian 10 (Buster) machine.

Étape 1: Génération d'un certificat auto-signé

Notre première étape sera de générer un certificat auto-signé. Émettez la commande ci-dessous dans le terminal pour générer CSR (demande de signature de certificat) et une clé:

$ sudo openssl req -x509 -Nodes -Days 365 -Newkey RSA: 2048 -Keyout / etc / ssl / private / auto-signifié-nginx.clé -out / etc / ssl / certs / auto-indiqué-nginx.CRT

Vous serez invité à fournir des informations telles que le nom, l'état de votre pays, l'état, la localité, le nom commun (votre nom de domaine ou votre adresse IP) et l'adresse e-mail.

Dans la commande ci-dessus, OpenSSL créera les deux fichiers suivants:

  • CSR: auto-indiqué.CRT dans le dans le / etc / ssl / Cert
  • Clé: auto-indiqué.clé dans le / etc / ssl / répertoire privé

Créez maintenant le dhparam.fichier PEM Utilisation de la commande ci-dessous:

$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.PEM 2048

Étape 2: Configuration de Nginx pour utiliser SSL

Dans l'étape précédente, nous avons créé le RSE et la clé. Maintenant dans cette étape, nous allons configurer le nginx pour utiliser SSL. Pour cela, nous créerons un extrait de configuration et ajouterons des informations sur nos fichiers de certificat SSL et nos emplacements clés.

Émettez la commande ci-dessous dans le terminal pour créer un nouvel extrait de configuration auto-signé.fichier de confr dans le / etc / nginx / extraits.

$ sudo nano / etc / nginx / extraits / auto-signé.confli

Dans le fichier, ajoutez les lignes suivantes:

ssl_certificate / etc / ssl / certs / auto-indiqué.CRT;
ssl_certificate_key / etc / ssl / private / auto-signé-nginx.clé;

Le ssl_certificate est réglé sur auto-indiqué.CRT (fichier de certificat) tandis que le ssl_certificate_key est réglé sur auto-indiqué.clé (fichier clé).

Économisez et fermez le auto-signé.confli déposer.

Maintenant, nous allons créer un autre fichier d'extrait SSL-Params.confli et configurer certains paramètres SSL de base. Émettez la commande ci-dessous dans le terminal pour modifier le SSL-Params.confli déposer:

$ sudo nano / etc / nginx / extraits / ssl-params.confli

Ajouter le contenu suivant au fichier:

SSL_PROTOCOLS TLSV1.2;
ssl_prefer_server_ciphers sur;
SSL_DHPARAM / ETC / SSL / CERTS / DHPARAM.pem;
SSL_CIPHERS ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
SSL_SESSION_CACHE partagée: SSL: 10m;
SSL_SESSION_TICKETS OFF;
# ssl_stapling sur;
# ssl_stapling_verify sur;
Resolver 8.8.8.8 8.8.4.4 valide = 300S;
résolver_timeout 5s;
add_header x-frame-options nier;
add_header x-content-type-options nosniff;
add_header x-xss-protection "1; mode = bloc";

Comme nous n'utilisons pas de certificat signé CA, nous avons donc désactivé l'agrafage SSL. Si vous utilisez un certificat signé CA, décommentez le ssl_stapling entrée.

Étape 3: Configuration du nginx pour utiliser SSL

Nous allons maintenant ouvrir le fichier de configuration du bloc de serveur Nginx pour effectuer certaines configurations. Dans cette étape, nous supposerons que vous avez déjà configuré le bloc serveur, qui sera similaire à ceci:

serveur
Écoutez 80;
Écoutez [::]: 80;
root / var / www / test.org / html;
Index index.index html.index HTM.nginx-debian.html;
Test de server_name.org www.test.org;
emplacement /
try_files $ uri $ uri / = 404;

Pour ouvrir le fichier de configuration de bloc de serveur Nginx, utilisez la commande ci-dessous:

$ sudo nano / etc / nginx / sites-disponible / test.org

Modifiez maintenant le serveur Block pour faire ressembler ceci:

serveur
Écoutez 443 SSL;
Écoutez [::]: 443 SSL;
Inclure des extraits / auto-signés.conf;
Inclure des extraits / SSL-Params.conf;
root / var / www / test.org / html;
Index index.index html.index HTM.nginx-debian.html;
Test de server_name.org www.test.org;

Dans les configurations ci-dessus, nous avons également ajouté les extraits SSL auto-signé.confli et SSL-Params.confli que nous avons configuré plus tôt.

Ensuite, ajoutez un deuxième serveur bloc.

serveur
Écoutez 80;
Écoutez [::]: 80;
Test de server_name.org www.test.org;
retour 302 https: // $ server_name $ request_uri;

Dans la configuration ci-dessus, retour 302 Redirige le HTTP vers HTTPS.

Note: Assurez-vous de remplacer le test.org avec votre propre nom de domaine. Maintenant, enregistrez et fermez le fichier.

Étape 4: Autoriser le trafic SSL via un pare-feu

Si un pare-feu est activé sur votre système, vous devrez autoriser le trafic SSL à travers lui. Nginx vous fournit trois profils différents avec UFW. Vous pouvez les afficher en utilisant la commande ci-dessous dans le terminal:

$ sudo ufw Liste des applications

Vous verrez la sortie suivante avec trois profils pour le trafic Nginx.

Vous devrez autoriser le profil «Nginx complet» dans le pare-feu. Pour ce faire, utilisez la commande ci-dessous:

$ sudo ufw permettre 'nginx full'

Pour vérifier si le profil a été autorisé dans le pare-feu, utilisez la commande ci-dessous:

$ sudo ufw statut

Étape 5: Testez le fichier de configuration Nginx

Testez maintenant le fichier de configuration Nginx à l'aide de la commande ci-dessous dans le terminal:

$ sudo nginx -t

Vous devriez voir la sortie ci-dessous.


Créez maintenant le lien symbolique entre les sites disponibles et les sites compatibles:

$ ln -s / etc / nginx / sites disponibles / test.com / etc / nginx / sites compatible /

Puis redémarrez le service Nginx pour appliquer les modifications de configuration. Utilisez la commande ci-dessous pour le faire:

$ sudo systemctl redémarrer nginx

Étape 6: Tester SSL

Maintenant, pour tester le SSL, accédez à l'adresse suivante:

Https: // Adresse Domain-Or-IP

Comme nous avons mis en place le certificat auto-signé, nous verrons donc un avertissement que la connexion n'est pas sécurisée. La page suivante apparaît lors de l'utilisation du navigateur Mozilla Firefox.

Clique le Avancé bouton.

Cliquez sur Ajouter une exception.

Puis clique Confirmer une exception de sécurité.

Vous verrez maintenant votre site HTTPS mais avec un panneau d'avertissement (verrouillage avec un panneau d'avertissement jaune) de la sécurité de votre site Web.

Vérifiez également si la redirection fonctionne correctement en accédant à votre domaine ou à votre adresse IP à l'aide de HTTP.

Adresse http: // domaine-ou-ip

Maintenant, si votre site redirige automatiquement vers HTTPS, cela signifie que la redirection a fonctionné correctement. Pour configurer la redirection en permanence, modifiez le fichier de configuration du bloc serveur à l'aide de la commande ci-dessous dans le terminal:

$ sudo nano / etc / nginx / sites-disponible / test.org

Maintenant, changez le retour 302 rendre 301 dans le fichier puis enregistrer et fermer.

C'est ainsi que vous pouvez configurer SSL pour Nginx dans Debian 10 System. Nous avons mis en place le certificat auto-signé pour la démonstration. Si vous êtes dans un environnement de production, optez toujours pour un certificat CA.