From 351f90fa1caaf1f15720e2ffe324d973e88158bf Mon Sep 17 00:00:00 2001 From: Ying Li Date: Sat, 14 Nov 2015 20:20:13 -0800 Subject: [PATCH] Add a script to use openssl to generate root/server/client ssl certs. Signed-off-by: Ying Li --- opensslCertGen.sh | 133 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100755 opensslCertGen.sh diff --git a/opensslCertGen.sh b/opensslCertGen.sh new file mode 100755 index 0000000000..715c1b3bc6 --- /dev/null +++ b/opensslCertGen.sh @@ -0,0 +1,133 @@ +#!/usr/bin/env bash + +# Script to be used for generating testing certs only - for a production system, +# a public CA or an internal CA should be used + + +CLIENT_USAGE=<] + +Example: + ${0} client -o clienttls +EOL + +SERVER_USAGE=< [-o ] + [-r ] + [-a ] [-a ] ... + +Example: + ${0} server -o servertls -n notary-server -a DNS:notaryserver \ + -a DNS:notary_server -a IP:127.0.0.1" +EOL + +if [[ -z "${1}" ]]; then + printf "${CLIENT_USAGE}\n\n${SERVER_USAGE}\n\n" + exit 1 +fi + +OPENSSLCNF= +for path in /etc/openssl/openssl.cnf /etc/ssl/openssl.cnf /usr/local/etc/openssl/openssl.cnf; do + if [[ -e ${path} ]]; then + OPENSSLCNF=${path} + fi +done +if [[ -z ${OPENSSLCNF} ]]; then + printf "Could not find openssl.cnf" + exit 1 +fi + +if [[ "${1}" == "client" ]]; then + # Generate client keys - ensure that these keys are NOT CA's, otherwise + # any client that is compromised can sign any number of other client + # certs. + OUT="clienttls" + while getopts "o:" opt "${@:2}"; do + case "${opt}" in + o) + OUT="${OPTARG}" + ;; + *) + printf "${CLIENT_USAGE}" + exit 1 + ;; + esac + done + + openssl genrsa -out "${OUT}.key" 4096 + openssl req -new -key "${OUT}.key" -out "${OUT}.csr" \ + -subj '/C=US/ST=CA/L=San Francisco/O=Docker/CN=Notary Testing Client Auth' + + cat > "${OUT}.cnf" < "${OUT}.cnf" + cat >> "${OUT}.cnf" <> "${OUT}.cnf" + fi + + openssl genrsa -out "${OUT}.key" 4096 + openssl req -new -nodes -key "${OUT}.key" -out "${OUT}.csr" \ + -subj "/C=US/ST=CA/L=San Francisco/O=Docker/CN=${COMMONNAME}" \ + -config "${OUT}.cnf" -extensions "v3_req" + openssl x509 -req -days 3650 -in "${OUT}.csr" -signkey "${OUT}.key" \ + -out "${OUT}.crt" -extensions v3_req -extfile "${OUT}.cnf" +fi