đŸ’Ÿ Archived View for lord.re â€ș posts â€ș 37-nginx-https â€ș index.gmi captured on 2024-08-18 at 18:37:47. Gemini links have been rewritten to link to archived content

View Raw

More Information

âŹ…ïž Previous capture (2024-08-18)

-=-=-=-=-=-=-

Nginx HTTPS 2015

-------------------------------------------------

[21/02/2015] - ~3mins - #meta #www #adminsys #tips #nginx #tls

-------------------------------------------------

Coucou ! Comme vous le savez surement, commencer un article par "coucou" c'est con.

Mais aprĂšs tout pourquoi pas ?

Sous des apparences Ă  priori banales, c'est finalement plutĂŽt original (peut-ĂȘtre mĂȘme inĂ©dit !) pour un article technique.

Et puis mine de rien ça permet d'avoir une intro qui va avec, donc on ne va pas s'en plaindre.

Bon donc vu que la folie des failles SSL et compagnie tend Ă  se calmer pour le moment, c'est peut-ĂȘtre le bon moment de mettre Ă  jour sa conf Nginx.

Donc on va tenter d'avoir la meilleure note possible sur le test de Qualys ssllabs.

Si comme moi vous pensez que les certificats x509 (SSL) font marcher une mafia (et aussi parceque vous ĂȘtes radin), vous ferez un certificat auto-signĂ©.

Le navigateur rĂąlera donc mĂȘme si votre sĂ©curitĂ© sera Ă©levĂ©e.

Hey ho Let's GO !

Bon on commence par générer les paramÚtres de Diffie-Hellman car ça peut prendre pas mal de temps (dix minutes sur une bonne machine).

Donc dans un term on commence un joli **openssl dhparam -out dh.pem 4096**.

VoilĂ  vous pouvez compter les points si vous ĂȘtes patients, sinon vous pouvez passer Ă  la suite.

Maintenant générons le certificat et sa clé : **openssl req -x509 rsa:4096 -keyout lord.re.key -out lord.re.cert -days 3650 -nodes -sha256** et voilà.

Ça va aussi mouliner un peu mais ça devrait le faire.

On peut donc passer Ă  la suite.

Bon ce coup-ci on passe Ă  la conf de Nginx.

Oh Joie ! J'aime Nginx.

Son fichier de conf n'est qu'illumination et fun.

Bref.

On va tripoter un block server :

server {
  listen 443;
  server_name lord.re;
  ssl on;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
  

}

Bon lĂ  c'est l'intro on va dire.

En gros on ne garde que les ciphers les plus solides.

Et on vire SSLv1,2 et 3.

Ces vieilleries on fait leur temps et devraient ĂȘtre bloquĂ©es partout (et pas uniquement pour https).

On continue par du classique :

ssl_dhparam /etc/nginx/dh.pem;
ssl_certificate /etc/nginx/lord.re.cert;
ssl_certificate_key /etc/nginx/lord.re.key;

Bon ça vous l'avez dĂ©jĂ  vu dans tous les autres tutos (sauf peut-ĂȘtre le DH).

Le DH vous permettra de vous la péter (en plus de pas mal renforcer l'échange de clé).

LĂ  on rajoute du bonus :

ssl_session_cache shared:ssl_session_cache:10m;
ssl_session_timeout 8h;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=157680000;

Donc lĂ  on dĂ©finit un buffer de 10Mo pour garder les sessions en cache, donc plusieurs connexions depuis un mĂȘme client seront gardĂ©es en mĂ©moire et rĂ©utilisĂ©es.

Donc on Ă©vite pas mal de handshake SSL.

Bon ça vaut pas du vrai pipelining HTTP mais bon.

On rajoute Ă©galemement un entĂȘte http permettant de faire le HSTS.

En gros le HSTS consiste à dire au client https de ne venir qu'en https pendant au moins la durée indiquée.

Donc votre navigateur de lui-mĂȘme rĂ©utilisera HTTPS lors des prochaines visites.

Et ça, c'est chouette !

Bon bha maintenant j'espÚre que la génération du DH, de la clé et du DH a terminée, parceque maintenant yapuka ! Bon donc maintenant **systemctl restart nginx**.

Haha Hahahaha.

Bon non je déconne.

Mieux.

VoilĂ  vous pouvez maintenant vous la racontez avec votre super note au ssllabs.

Vous n'aurez pas de A+ car pour cela il faut de l'OCSP stapling (téléchargement de la liste de révocation des certifs toussa toussa) mais comme on utilise du certificat auto-signé, on a pas de CA donc pas de moyen d'indiquer la révocation d'un certificat.

Liens

------------------------------------

🏠 Retour à la home

------------------------------------

[21/02/2015] - #meta #www #adminsys #tips #nginx #tls

------------------------------------

[>> Suivant >>] ⏭ Updater dynamiquement ses zones DNS

[<< PrĂ©cĂ©dent <<] ⏼ Gestionnaire de passwords : password-store