From 73a9239019b7dd3ace938f9bd4766cf0dabec6fd Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Wed, 9 Dec 2015 01:02:27 +0100 Subject: Add an option --chain[=FILE]. --- letsencrypt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/letsencrypt b/letsencrypt index 7465378..593ab8f 100755 --- a/letsencrypt +++ b/letsencrypt @@ -17,7 +17,7 @@ declare COMMAND ACCOUNTKEY declare -l GENKEY declare RUNAS QUIET= DEBUG= -declare SRVCRT= CHAIN= CSR SRVKEY +declare SRVCRT= CHAIN CSR SRVKEY declare -i MIN_AGE=0 declare -l HASH= declare SUBJECT=/ @@ -62,8 +62,8 @@ usage() { --san=STRING Comma-separated list of Subject Alternative Names formatted as "type:value" --keyusage=STRING Comma-separated list of Key Usages, see x509v3_config(5ssl) (default: "digitalSignature,keyEncipherment,keyCertSign") - --chain Store not only the server certificate in the file specified with --output, but - also the CA's + --chain[=FILE] Store the server certificate along with its intermediate CA in FILE; if FILE is + empty or omitted, use the file specified with --output --min-age=SECONDS Don't do anything if the certificate specified by --output exists and its expiration is more than SECONDS ahead. --output=FILE Where to store the issued (signed) X.509 certificate @@ -102,7 +102,8 @@ while [ $# -gt 0 ]; do --output=*) SRVCRT="${1#*=}";; --min-age=*) MIN_AGE="${1#*=}";; - --chain) CHAIN=1;; + --chain) CHAIN=;; + --chain=*) CHAIN="${1#*=}";; --csr=*) CSR="${1#*=}";; --key=*) SRVKEY="${1#*=}";; --hash=*) HASH="${1#*=}";; @@ -295,6 +296,16 @@ if [ "$COMMAND" = 'new-cert' ]; then cat "$x509" >"$SRVCRT" [ ! "$DEBUG" ] || openssl x509 -noout -text <"$SRVCRT" + # add the CA chain + if [ ${CHAIN+x} ]; then + if [ "${CHAIN:-$SRVCRT}" = "$SRVCRT" ]; then + cat "$CAfile" >>"$SRVCRT" + else + [ -e "$CHAIN" ] || touch "$CHAIN" + cat "$SRVCRT" "$CAfile" >"$CHAIN" + fi + fi + if [ ! "$QUIET" ]; then echo "X.509 certificate $SRVCRT has been updated or renewed" echo -- cgit v1.2.3