blob: cd3066670b3d1558b7f58dd2b29e1d59dd561dd6 [file] [log] [blame]
{%- from "nginx/files/headers/_strict_transport_security.conf" import strict_transport_security %}
{%- if site.get('ssl', {'enabled': False}).get('enabled', False) %}
{%- set ca_file=site.ssl.get('ca_file', '') %}
{%- set key_file=site.ssl.get('key_file', '/etc/ssl/private/{0}.key'.format(site.host.name)) %}
{%- set cert_file=site.ssl.get('cert_file', '/etc/ssl/certs/{0}.crt'.format(site.host.name)) %}
{%- set chain_file=site.ssl.get('chain_file', '/etc/ssl/certs/{0}-with-chain.crt'.format(site.host.name)) %}
ssi on;
ssl on;
ssl_session_cache {{ site.ssl.get('session_cache', 'shared:SSL:10m') }};
ssl_session_timeout {{ site.ssl.get('session_timeout', '10m') }};
{%- if site.ssl.engine is not defined %}
ssl_certificate_key {{ key_file }};
{%- if site.ssl.chain is defined or site.ssl.authority is defined %}
ssl_certificate {{ chain_file }};
{%- else %}
ssl_certificate {{ cert_file }};
{%- endif %}
{%- elif site.ssl.engine == 'letsencrypt' %}
{%- set cert = site.ssl.get("certificate", site.host.name) %}
ssl_certificate /etc/letsencrypt/live/{{ cert }}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{{ cert }}/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/{{ cert }}/fullchain.pem;
{%- include "nginx/files/_letsencrypt.conf" %}
{%- elif site.ssl.engine == 'salt' %}
ssl_certificate_key {{ key_file }};
ssl_certificate {{ chain_file }};
{%- endif %}
{%- if site.ssl.get('mode', 'secure') not in ["secure", "normal"] %}
{%- if site.ssl.protocols is defined %}
{%- set _protocols = [] %}
{%- for protocol_name, protocols in site.ssl.get('protocols', {}).iteritems() %}
{%- if protocols.get('enabled', False) %}
{%- do _protocols.append(protocols.name) %}
{%- endif %}
{%- endfor %}
ssl_protocols {{ ' '.join(_protocols) }};
{%- endif %}
{%- if site.ssl.ciphers is defined %}
{%- set _ciphers = [] %}
{%- for cipher_name, ciphers in site.ssl.get('ciphers', {}).iteritems() %}
{%- if ciphers.get('enabled', False) %}
{%- do _ciphers.append(ciphers.name) %}
{%- endif %}
{%- endfor %}
ssl_ciphers {{ ':'.join(_ciphers) }};
{%- endif %}
{%- if site.ssl.prefer_server_ciphers is defined %}
ssl_prefer_server_ciphers {{ site.ssl.prefer_server_ciphers }};
{%- endif %}
{%- if site.ssl.buffer_size is defined %}
ssl_buffer_size {{ site.ssl.buffer_size }};
{%- endif %}
{%- if site.ssl.get('crl', {'enabled': False}).enabled and site.ssl.crl.file is defined %}
ssl_crl {{ site.ssl.crl.file }};
{%- endif %}
{%- if site.ssl.get('dhparam', {'enabled': False}).enabled %}
ssl_dhparam /etc/ssl/dhparams_{{ site_name }}.pem;
{%- endif %}
{%- if site.ssl.ecdh_curve is defined %}
{%- set _ecdh_curve = [] %}
{%- for ecdh_curve_name, ecdh_curve in site.ssl.get('ecdh_curve', {}).iteritems() %}
{%- if ecdh_curve.get('enabled', False) %}
{%- do _ecdh_curve.append(ecdh_curve.name) %}
{%- endif %}
{%- endfor %}
ssl_ecdh_curve {{ ':'.join(_ecdh_curve) }};
{%- endif %}
{%- if site.ssl.password_file is defined and site.ssl.get('password_file', {'enabled': False}).enabled %}
{%- if site.ssl.password_file.content is defined and site.ssl.password_file.file is not defined %}
ssl_password_file /etc/ssl/password_{{ site_name }}.key;
{%- endif %}
{%- if site.ssl.password_file.file is defined %}
ssl_password_file {{ site.ssl.password_file.file }};
{%- endif %}
{%- endif %}
{%- if site.ssl.get('ticket_key', {'enabled': False}).enabled %}
ssl_session_ticket_key /etc/ssl/ticket_{{ site_name }}.key;
{%- endif %}
{%- if site.ssl.session_tickets is defined %}
ssl_session_tickets {{ site.ssl.session_tickets }};
{%- endif %}
{%- if site.ssl.stapling is defined %}
ssl_stapling {{ site.ssl.stapling }};
{%- endif %}
{%- if site.ssl.resolver is defined %}
{%- if site.ssl.resolver.valid_seconds is defined %}
resolver {{ site.ssl.resolver.address }} valid={{ site.ssl.resolver.valid_seconds }}s;
{%- else %}
resolver {{ site.ssl.resolver }};
{%- endif %}
{%- if site.ssl.resolver.timeout_seconds is defined %}
resolver_timeout {{ site.ssl.resolver.timeout_seconds }}s;
{%- endif %}
{%- endif %}
{%- if site.ssl.stapling_file is defined %}
ssl_stapling_file {{ site.ssl.stapling_file }};
{%- endif %}
{%- if site.ssl.stapling_responder is defined %}
ssl_stapling_responder {{ site.ssl.stapling_responder }};
{%- endif %}
{%- if site.ssl.stapling_verify is defined %}
ssl_stapling_verify {{ site.ssl.stapling_verify }};
{%- endif %}
{%- if site.ssl.verify_client is defined %}
ssl_verify_client {{ site.ssl.verify_client }};
{%- endif %}
{%- if site.ssl.get('client_certificate', {'enabled': False}).enabled and site.ssl.client_certificate.file is defined %}
ssl_client_certificate {{ site.ssl.client_certificate.file }};
{%- endif %}
{%- if site.ssl.verify_depth is defined %}
ssl_verify_depth {{ site.ssl.verify_depth }};
{%- endif %}
{{ strict_transport_security(site) | indent(2) }}
{%- else %}
{#- Using this file is deprecated, it may be silensly removed in future. All options are now set from _ssl.conf #}
{#- Please check README about new option types #}
{%- set ssl_mode = site.ssl.get('mode', 'secure') %}
{%- include "nginx/files/_ssl_"+ssl_mode+".conf" %}
{%- endif %}
{%- endif %}