Skip to content

Commit d24fe8c

Browse files
committed
feat(router): enable ssl caching and expose additional ssl configuration
1 parent bf94812 commit d24fe8c

5 files changed

Lines changed: 43 additions & 18 deletions

File tree

docs/customizing_deis/router_settings.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ setting description
7070
/deis/router/sslCiphers cluster-wide enabled SSL ciphers
7171
/deis/router/sslKey cluster-wide SSL private key
7272
/deis/router/sslDhparam cluster-wide SSL dhparam
73+
/deis/router/sslProtocols nginx ssl_protocols setting (default: TLSv1 TLSv1.1 TLSv1.2)
74+
/deis/router/sslSessionCache nginx ssl_session_cache setting (default: not set)
75+
/deis/router/sslSessionTickets nginx ssl_session_tickets setting (default: on)
76+
/deis/router/sslSessionTimeout nginx ssl_session_timeout setting (default: 10m)
77+
/deis/router/sslBufferSize nginx ssl_buffer_size setting (default: 4k)
7378
/deis/router/workerProcesses nginx number of worker processes to start (default: auto i.e. available CPU cores)
7479
/deis/router/proxyProtocol nginx PROXY protocol enabled
7580
/deis/router/proxyRealIpCidr nginx IP with CIDR used by the load balancer in front of deis-router (default: 10.0.0.0/8)

router/image/conf.d/ssl.conf.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[template]
2+
src = "ssl.conf"
3+
dest = "/opt/nginx/conf/ssl.conf"
4+
uid = 0
5+
gid = 0
6+
mode = "0644"
7+
keys = [
8+
"/deis/router",
9+
]
10+
reload_cmd = "/opt/nginx/sbin/nginx -s reload"

router/image/templates/deis.conf

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,5 @@ listen 80{{ if exists "/deis/router/proxyProtocol" }} proxy_protocol{{ end }};
66
listen 443 ssl spdy{{ if exists "/deis/router/proxyProtocol" }} proxy_protocol{{ end }};
77
ssl_certificate /etc/ssl/deis.cert;
88
ssl_certificate_key /etc/ssl/deis.key;
9-
{{ if exists "/deis/router/sslDhparam" }}
10-
ssl_dhparam /etc/ssl/dhparam.pem;
11-
{{ end }}
12-
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
13-
{{ if exists "/deis/router/sslCiphers" }}
14-
ssl_ciphers '{{ getv "/deis/router/sslCiphers" }}';
15-
ssl_prefer_server_ciphers on;
16-
{{ end }}
9+
include ssl.conf;
1710
{{ end }}

router/image/templates/nginx.conf

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -197,11 +197,7 @@ http {
197197
listen 443 ssl spdy{{ if ne $useProxyProtocol "false" }} proxy_protocol{{ end }};
198198
ssl_certificate /etc/ssl/deis/certs/{{ $app_domain }}.cert;
199199
ssl_certificate_key /etc/ssl/deis/keys/{{ $app_domain }}.key;
200-
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
201-
{{ if exists "/deis/router/sslCiphers" }}
202-
ssl_ciphers '{{ getv "/deis/router/sslCiphers" }}';
203-
ssl_prefer_server_ciphers on;
204-
{{ end }}
200+
include ssl.conf;
205201
{{/* if there's no app SSL cert but we have a router SSL cert, enable that instead */}}
206202
{{/* TODO (bacongobbler): wait for https://github.com/kelseyhightower/confd/issues/270 */}}
207203
{{/* so we can apply this config to just subdomains of the platform domain. */}}
@@ -366,11 +362,7 @@ http {
366362
listen 443 ssl spdy{{ if ne $useProxyProtocol "false" }} proxy_protocol{{ end }};
367363
ssl_certificate /etc/ssl/deis/certs/{{ $app_domain }}.cert;
368364
ssl_certificate_key /etc/ssl/deis/keys/{{ $app_domain }}.key;
369-
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
370-
{{ if exists "/deis/router/sslCiphers" }}
371-
ssl_ciphers '{{ getv "/deis/router/sslCiphers" }}';
372-
ssl_prefer_server_ciphers on;
373-
{{ end }}
365+
include ssl.conf;
374366
{{/* if there's no app SSL cert but we have a router SSL cert, enable that instead */}}
375367
{{/* TODO (bacongobbler): wait for https://github.com/kelseyhightower/confd/issues/270 */}}
376368
{{/* so we can apply this config to just subdomains of the platform domain. */}}

router/image/templates/ssl.conf

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# set the allowed protocols
2+
ssl_protocols {{ or (getv "/deis/router/sslProtocols") "TLSv1 TLSv1.1 TLSv1.2" }};
3+
4+
# turn on session caching to drastically improve performance
5+
{{ if exists "/deis/router/sslSessionCache" }}
6+
ssl_session_cache {{ getv "/deis/router/sslSessionCache" }};
7+
ssl_session_timeout {{ or (getv "/deis/router/sslSessionTimeout") "10m" }};
8+
{{ end }}
9+
10+
# allow configuring ssl session tickets
11+
ssl_session_tickets {{ or (getv "/deis/router/sslSessionTickets") "on" }};
12+
13+
# slightly reduce the time-to-first-byte
14+
ssl_buffer_size {{ or (getv "/deis/router/sslBufferSize") "4k" }};
15+
16+
# allow configuring custom ssl ciphers
17+
{{ if exists "/deis/router/sslCiphers" }}
18+
ssl_ciphers '{{ getv "/deis/router/sslCiphers" }}';
19+
ssl_prefer_server_ciphers on;
20+
{{ end }}
21+
22+
# allow custom DH parameters
23+
{{ if exists "/deis/router/sslDhparam" }}
24+
ssl_dhparam /etc/ssl/dhparam.pem;
25+
{{ end }}

0 commit comments

Comments
 (0)