From 19609f70784faa605c9ad1d6413d9aae632c2f86 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 22 Nov 2014 16:04:05 -0500 Subject: [PATCH] Import ssl certificates Also ensures output is stored in proper tls directory Closes #518 --- docs/tls-spdy-support.md | 10 ++++++++ plugins/nginx-vhosts/commands | 43 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100755 plugins/nginx-vhosts/commands diff --git a/docs/tls-spdy-support.md b/docs/tls-spdy-support.md index 80f472421..430af9ce0 100644 --- a/docs/tls-spdy-support.md +++ b/docs/tls-spdy-support.md @@ -28,3 +28,13 @@ The nginx configuration will need to be reloaded in order for the updated TLS co The [HSTS header](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) is an HTTP header that can inform browsers that all requests to a given site should be made via HTTPS. dokku does not, by default, enable this header. It is thus left up to you, the user, to enable it for your site. Beware that if you enable the header and a subsequent deploy of your application results in an HTTP deploy (for whatever reason), the way the header works means that a browser will not attempt to request the HTTP version of your site if the HTTPS version fails. + +## Importing ssl certificates + +You can import ssl certificates via tarball using the following command: + +``` bash +dokku nginx:import-ssl myapp < archive-of-certs.tar +``` + +This archive should is expanded via `tar xvf`. It should contain `server.crt` and `server.key`. diff --git a/plugins/nginx-vhosts/commands b/plugins/nginx-vhosts/commands new file mode 100755 index 000000000..59943655c --- /dev/null +++ b/plugins/nginx-vhosts/commands @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x + +case "$1" in + nginx:import-ssl) + if [[ -z $2 ]]; then + echo "Please specify an app to create" + exit 1 + fi + APP="$2" + if [[ ! -d "$DOKKU_ROOT/$APP" ]]; then + echo "App $APP does not exist" + exit 1 + fi + if [[ -t 0 ]]; then + echo "Tar archive containing server.crt and server.key expected on stdin" + exit 1 + fi + + TEMP_DIR=`mktemp -d` + cd $TEMP_DIR + tar xvf - <&0 + if [[ -f "$TEMP_DIR/server.crt" ]]; then + echo "Tar archive missing server.crt" + exit 1 + fi + if [[ -f "$TEMP_DIR/server.key" ]]; then + echo "Tar archive missing server.key" + exit 1 + fi + + mkdir -p "$DOKKU_ROOT/$APP/tls" + mv "$TEMP_DIR/server.crt" "$DOKKU_ROOT/$APP/tls/server.crt" + mv "$TEMP_DIR/server.key" "$DOKKU_ROOT/$APP/tls/server.key" + rm -rf $TEMP_DIR + ;; + help) + cat && cat< Imports a tarball from stdin; should contain server.crt and server.key +EOF + ;; + +esac