diff --git a/roles/nginx/README.md b/roles/nginx/README.md index a1f60c4..e2eb8db 100644 --- a/roles/nginx/README.md +++ b/roles/nginx/README.md @@ -17,12 +17,7 @@ Optional variables are: - `nginx_owner`: If a unix user has to be created for this project. - `nginx_path`: To create a directory owned by `nginx_owner`. -- `ssl_ciphers`: [Specifies the enabled ciphers](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers). -- `ssl_protocols`: [Enables the specified protocols.](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols) -- `ssl_prefer_server_ciphers`: [Specifies that server ciphers should be preferred over client ciphers when using the SSLv3 and TLS protocols.](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers) -- `ssl_session_cache`: [Sets the types and sizes of caches that store session parameters.](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache). -- `HSTS_header`: HTTP header to inject. - +- `certbot_authenticator`: Defaults to `gandi`, can use `nginx`. ### Author Information diff --git a/roles/nginx/defaults/main.yml b/roles/nginx/defaults/main.yml index 077ec83..bacc45b 100644 --- a/roles/nginx/defaults/main.yml +++ b/roles/nginx/defaults/main.yml @@ -1,10 +1,7 @@ --- -ssl_ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" -ssl_protocols: "TLSv1.2 TLSv1.3" + certbot_authenticator: gandi -ssl_prefer_server_ciphers: "off" -ssl_session_cache: "shared:ssl_session_cache:10m" -HSTS_header: 'Strict-Transport-Security "max-age=63072000; always"' + nginx_conf: | server { diff --git a/roles/nginx/templates/letsencrypt.conf.j2 b/roles/nginx/templates/letsencrypt.conf.j2 index e93435f..4fcdaec 100644 --- a/roles/nginx/templates/letsencrypt.conf.j2 +++ b/roles/nginx/templates/letsencrypt.conf.j2 @@ -1,21 +1,27 @@ -# Inspired from -# https://ssl-config.mozilla.org/#server=nginx&version=1.14.2&config=intermediate&openssl=1.1.1d&guideline=5.6 -ssl_ciphers "{{ ssl_ciphers }}"; -ssl_protocols {{ ssl_protocols }}; -ssl_prefer_server_ciphers {{ ssl_prefer_server_ciphers }}; +# generated 2023-01-13, Mozilla Guideline v5.6, nginx 1.17.7, OpenSSL 1.1.1k, intermediate configuration +# https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1k&guideline=5.6 -ssl_session_cache {{ ssl_session_cache }}; ssl_session_timeout 1d; +ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_certificate /etc/letsencrypt/live/{{ nginx_domain }}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/{{ nginx_domain }}/privkey.pem; + +# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam ssl_dhparam /etc/ssl/certs/dhparam.pem; +# intermediate configuration +ssl_protocols TLSv1.2 TLSv1.3; +ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; +ssl_prefer_server_ciphers off; + +# HSTS (ngx_http_headers_module is required) (63072000 seconds) +add_header Strict-Transport-Security "max-age=63072000" always; + +# OCSP stapling ssl_stapling on; ssl_stapling_verify on; -ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt; -{% if HSTS_header %} -add_header {{ HSTS_header }}; -{% endif %} +# verify chain of trust of OCSP response using Root CA and Intermediate certs +ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;