Skip to content

Commit 8c26057

Browse files
committed
Added plugin for generating and assigning SSL certifcates
1 parent 0618687 commit 8c26057

2 files changed

Lines changed: 72 additions & 0 deletions

File tree

‎plugins/ssl/commands‎

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/bin/bash
2+
3+
source "$(dirname $0)/vars"
4+
5+
case "$1" in
6+
ssl:generate)
7+
verify_app_name "$2"
8+
verify_max_args 2 "$@"
9+
10+
mkdir -p "$APP_DIR/ssl"
11+
12+
[[ -f "$APP_DIR/ssl/server.csr" ]] && fail "$APP: CSR is already generated"
13+
[[ -f "$APP_DIR/ssl/server.key" ]] || openssl genrsa -out "$APP_DIR/ssl/server.key" 2048
14+
openssl req -out "$APP_DIR/ssl/server.csr" -key "$APP_DIR/ssl/server.key" -new
15+
16+
cat "$APP_DIR/ssl/server.csr"
17+
;;
18+
19+
ssl:certificate)
20+
verify_app_name "$2"
21+
verify_max_args 2 "$@"
22+
mkdir -p "$APP_DIR/ssl"
23+
CERTIFICATE=$(cat)
24+
echo "$CERTIFICATE" | openssl x509 -text -noout
25+
echo "$CERTIFICATE" > "$APP_DIR/ssl/server.crt"
26+
27+
[[ ! -f "$APP_DIR/ssl/server.key" ]] || dokku deploy "$APP"
28+
;;
29+
30+
ssl:key)
31+
verify_app_name "$2"
32+
verify_max_args 2 "$@"
33+
mkdir -p "$APP_DIR/ssl"
34+
KEY=$(cat)
35+
echo "$KEY" | openssl rsa -in privateKey.key -check
36+
echo "$KEY" > "$APP_DIR/ssl/server.key"
37+
38+
[[ ! -f "$APP_DIR/ssl/server.crt" ]] || dokku deploy "$APP"
39+
;;
40+
41+
ssl:info)
42+
verify_app_name "$2"
43+
verify_max_args 2 "$@"
44+
45+
if [[ -f "$APP_DIR/ssl/server.csr" ]]; then
46+
openssl x509 -in "$APP_DIR/ssl/server.csr" -text -noout || true
47+
fi
48+
if [[ -f "$APP_DIR/ssl/server.crt" ]]; then
49+
openssl x509 -in "$APP_DIR/ssl/server.crt" -text -noout || true
50+
fi
51+
;;
52+
53+
ssl:forget)
54+
verify_app_name "$2"
55+
verify_max_args 2 "$@"
56+
rm -f "$APP_DIR/ssl/server.csr" "$APP_DIR/ssl/server.crt" "$APP_DIR/ssl/server.key"
57+
dokku deploy "$APP"
58+
;;
59+
60+
help)
61+
cat && cat<<EOF
62+
ssl:generate <app> Generate certificate signing request for an APP
63+
ssl:certificate <app> Pipe signed certifcate with all intermediates for an APP
64+
ssl:key <app> Pipe private key for an APP
65+
ssl:info <app> Show info about certifcate and certificate request
66+
ssl:forget <app> Wipes certificate for an APP
67+
EOF
68+
;;
69+
esac

‎plugins/ssl/vars‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
source "$(dirname $0)/../dokku_common"

0 commit comments

Comments
 (0)