nginx: be ready for a stronger ssl configuration.
This commit is contained in:
parent
2dc37dff40
commit
4f2b013b6f
|
@ -3,6 +3,8 @@ nginx_enabled: True
|
|||
nginx_use_ppa: False
|
||||
nginx_ppa_repo: ppa:nginx/stable
|
||||
nginx_package_state: installed
|
||||
# See https://mozilla.github.io/server-side-tls/ssl-config-generator/
|
||||
nginx_ssl_level: intermediate
|
||||
|
||||
#nginx_virthosts: []
|
||||
|
||||
|
@ -77,6 +79,8 @@ nginx_basic_auth_users:
|
|||
nginx_letsencrypt_managed: True
|
||||
nginx_websockets_support: False
|
||||
nginx_use_common_virthost: False
|
||||
# Set it to 'ssl http2' if the nginx version supports it
|
||||
nginx_ssl_type: ssl
|
||||
# When we do not use letsencrypt:
|
||||
# nginx_ssl_cert_file: '{{ pki_dir }}/certs/nginx.crt'
|
||||
# nginx_ssl_cert_key: '{{ pki_dir }}/keys/nginx.key'
|
||||
|
|
|
@ -3,6 +3,16 @@
|
|||
- name: Create the snippets directory
|
||||
file: dest={{ nginx_snippets_dir }} state=directory
|
||||
|
||||
- name: Create the pki directory
|
||||
file: dest={{ {{ pki_dir }}/nginx }} state=directory
|
||||
|
||||
- name: Create a dhparams file 2048 bits long
|
||||
shell: openssl dhparam -out {{ pki_dir }}/nginx/dhparams.pem 2048
|
||||
args:
|
||||
creates: '{{ pki_dir }}/nginx/dhparams.pem'
|
||||
when: nginx_ssl_level == 'intermediate'
|
||||
notify: Reload nginx
|
||||
|
||||
- name: remove nginx default virtualhost
|
||||
file: dest=/etc/nginx/sites-enabled/default state=absent
|
||||
notify: Reload nginx
|
||||
|
|
|
@ -5,13 +5,27 @@ ssl_certificate_key {{ letsencrypt_acme_certs_dir }}/privkey;
|
|||
ssl_certificate {{ nginx_ssl_cert_file | default('/etc/nginx/ssl/server.crt') }};
|
||||
ssl_certificate_key {{ nginx_ssl_cert_key | default ('/etc/nginx/ssl/server.key') }};
|
||||
{% endif %}
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
ssl_session_cache shared:SSL:50m;
|
||||
ssl_session_timeout 120m;
|
||||
{% if nginx_ssl_level == 'intermediate' %}
|
||||
ssl_dhparam {{ pki_dir }}/nginx/dhparams.pem;
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";
|
||||
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
|
||||
{% endif %}
|
||||
{% if nginx_ssl_level == 'modern' %}
|
||||
ssl_session_tickets off;
|
||||
# modern configuration. tweak to your needs.
|
||||
ssl_protocols TLSv1.2;
|
||||
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';
|
||||
{% endif %}
|
||||
ssl_prefer_server_ciphers on;
|
||||
{% if ansible_distribution_version | version_compare('14.04', '>=') %}
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
{% if letsencrypt_acme_install is defined and letsencrypt_acme_install %}
|
||||
ssl_trusted_certificate {{ letsencrypt_acme_certs_dir }}/fullchain;
|
||||
{% else %}
|
||||
ssl_trusted_certificate {{ nginx_ssl_fullchain_file | default('/etc/nginx/ssl/cacert.crt') }};
|
||||
{% endif %}
|
||||
add_header Strict-Transport-Security max-age=15768000;
|
||||
{% endif %}
|
||||
|
|
|
@ -99,9 +99,9 @@ server {
|
|||
|
||||
}
|
||||
|
||||
{% if item.ssl_enabled and item.ssl_only %}
|
||||
{% if item.ssl_enabled %}
|
||||
server {
|
||||
listen {{ https_port | default(443) }} ssl;
|
||||
listen {{ https_port | default(443) }} {{ nginx_ssl_type }};
|
||||
server_name {{ item.server_name }} {% if item.serveraliases is defined %}{{ item.serveraliases }}{% endif %};
|
||||
{% if item.access_log is defined %}
|
||||
access_log {{ item.access_log }};
|
||||
|
|
Loading…
Reference in New Issue