Sécuriser un service web avec HTTPS et NGINX

vignette

Rédigé par P3ter - - 5 commentaires

Suite a mes deux articles sur Piwik et sur les agrégateurs de flux RSS, je me suis penché sur la question de la sécurité avec HTTPS et NGINX, car ce sont des services auto-hébergés auxquels j'accède au travers d'Internet.


Jusqu'à présent, lorsque je me connectai à ces deux services, mon login et mon mot de passe circulaient en clair sur Internet, de mon PC jusqu'au serveur, n'importe qui pouvant alors les récupérer. J'ai donc mis en place une connexion sécurisée au travers du protocole HTTPS et d'un cryptage asymétrique par clé et certificat.

Ça parait compliqué comme ça mais vous allez voir que c'est très facile.

 

 

Création du certificat et de la clé

 

 

sudo mkdir /etc/nginx/openssl
cd /etc/nginx/openssl
sudo openssl req -new -x509 -days 1826 -nodes -out server.crt -keyout server.key

 

Modification du virtualhost

Afin que le site web utilise HTTPS il faut modifier son virtualhost. Dans mon cas il se trouve dans /etc/nginx/sites-enabled.

server {
    [...]
    listen 443 ssl;
    ssl on;
    ssl_certificate /etc/nginx/openssl/server.crt;
    ssl_certificate_key /etc/nginx/openssl/server.key;
    [...]
}

 

Rediriger HTTP vers HTTPS

Maintenant, pour rediriger automatiquement les requêtes HTTP (port 80) vers HTTPS (port 443), il faut ajouter une deuxième section "server {}" au tout début du virtualhost.

server {
    listen 80;
    server_name localhost;
    return 301 https://$server_name$request_uri;
}

Remplacez localhost par votre adresse IP publique ou votre nom de domaine, si besoin.

 

Pensez à ouvrir le port 443 sur votre firewall et redémarrez NGINX avec la commande :

sudo service nginx restart


Désormais en accédant à votre site vous serez automatiquement rediriger vers une connexion sécurisée. Le certificat n'étant pas connu de votre navigateur, un message de prévention vous sera affiché. Ajoutez simplement votre certificat au navigateur pour pourvoir accéder directement au site.

Fil RSS des commentaires de cet article

Écrire un commentaire

Quelle est la troisième lettre du mot hmxtp ?

#1  - Clara a dit :

Merci pour l'article, par contre j'ai bien réalisé sur mon site sauf que:

Pensez à ouvrir le port 443 sur votre firewall et redémarrez NGINX avec la commande :

A ce moment la plus rien ne fonctionne, pouvez vous m'aidez?

Répondre

#2  - Ludo a dit :

Quel est le contenu de votre fichier nginx.conf ?

Répondre

#3  - my-esta.fr a dit :

Super, merci. Par contre, comment fais-tu pour rediriger automatiquement le HTTP vers le HTTPS ?

Répondre

#4  - Pedro CADETE a dit :

@my-esta.fr : Bonjour. Je l'explique dans le dernier chapitre de l'article. Il faut modifier son virtualhost en ajoutant au début du fichier, une section supplémentaire "server{}" avec les paramètres que j'indique dans l'article.

Répondre

#5  - esta usa a dit :

Quel est le risque d'attaque d'un site HTTPS ? faut il une configuration particulière du server ?

Répondre