Le Cloud de la mère Zaclys

Mastodon config nginx

config nginx pour A+ (96/100) au test HTTPS et  A+ (125/100) au test OSB  (tout en restant compatible android 7 pour mon gars le suisse  ) 

 

Sur https://instances.mastodon.xyz/ chaque site a un note pour HTTPS et (bientôt) une note pour Obs
 

Pour tester votre 1ere note (https) , maxi 100 points , remplacez mastodon.azclys.com par votre url ici :
https://tls.imirhil.fr/https/mastodon.zaclys.com

Pour tester votre 2nd note (obs) , maxi A+ , c'est pareil ici : 
https://observatory.mozilla.org/analyze.html?host=mastodon.zaclys.com

 

Prérequis / admettons que mastodon soit déjà installé (debian 8 et certif letsencrypt sont ok ) 

comme expliqué ici : https://angristan.fr/installer-instance-mastodon-debian-8/

 

1/ d'abord forger le dhparam  :

test -d /etc/nginx/ssl || mkdir -p /etc/nginx/ssl 

nice openssl dhparam -out /etc/nginx/ssl/dhparam2.pem  4096 

 

2/ ensuite ma config  /etc/nginx/conf.d/mastodon.conf : 

ATTENTION pour la config ci dessous vous devez upgrader vers minimum Ruby v2.4.1 et Mastodon v1.2

 

 ssl_certificate /etc/letsencrypt/live/mastodon.zaclys.com/fullchain.pem; 

ssl_certificate_key /etc/letsencrypt/live/mastodon.zaclys.com/privkey.pem;

ssl_trusted_certificate  /etc/letsencrypt/live/mastodon.zaclys.com/chain.pem;

ssl_session_timeout 10m; 
ssl_session_cache shared:SSL:10m; 
ssl_session_tickets off; 
 

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
 

ssl_protocols TLSv1.2;


ssl_prefer_server_ciphers on;

ssl_dhparam  /etc/nginx/ssl/dhparam2.pem;

add_header Strict-Transport-Security 'max-age=15768000; includeSubDomains; preload';

add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
 
 
# mastodon version < 1.2 ( note A au test OBS)
# add_header Content-Security-Policy "default-src https: wss: 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com/; object-src 'none'; img-src data: 'self' https://www.gstatic.com/; font-src data: 'self' https://fonts.gstatic.com/; frame-ancestors 'none'; report-uri https://mastodon.report-uri.io/r/default/csp/enforce";   
 
# mastodon version 1.2 ( note A+ 125 à 130 au test OBS)
add_header Content-Security-Policy "frame-ancestors 'none'; object-src 'none'; script-src 'self'; base-uri 'none';";
 
 
# merci à Dryusdan

# EN RESUME : A FAIRE dans un shell sous root (avec au moins 2 certifs letsencrypt forgés) : 

# certif=/etc/letsencrypt/live/mastodon.zaclys.com/cert.pem 
# archive=/etc/letsencrypt/archive/mastodon.zaclys.com/cert1.pem
 
# key=$(openssl x509 -in $certif -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64) 

# key2=$(openssl x509 -in $archive -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64)

# echo " add_header Public-Key-Pins 'pin-sha256=\"$key\"; pin-sha256=\"$key2\"; max-age=5184000; includeSubDomains';"

# et integrer ici le résultat du echo ...

 

ssl_stapling on;
ssl_stapling_verify on;

keepalive_timeout 5;
sendfile on;
client_max_body_size 0;
gzip off;

 

 

3/ test et reload : 

 nginx -t && nginx -s reload

 

4/ si vous voulez contribuer pour améliorer encore, dites le nous et on complètera cette config pour tout le monde :

https://mastodon.zaclys.com/@zaclys

notamment sur ce point : HTTP Public Key Pinning (nginx / debian / letsencrypt) 

 

amicalement,



4 986 clics - Créé le 12/04/2017 par Tito - Modifié le 18/04/2017



Réagissez, commentez, discutez ...

Soyez le premier à réagir !





Partager ?

diaspora  G+  facebook  twitter  Digg  Yahoo  Delicious  Technorati  myspace




A lire également :