SSL Zertifikat erzeugen und direkt in die nginx.conf übernehmen

Variablen deklarieren

Im Folgenden ist sowohl die csh-Syntax als auch die bash-/sh-Syntax gezeigt.

# Variablen initialisieren und in nginx-Verzeichnis wechseln
# CSH-Syntax (auch für tcsh und ähnliche)
set BASE_FILENAME=`hostname`
set key=${BASE_FILENAME}.key
set csr=${BASE_FILENAME}.csr
set crt=${BASE_FILENAME}.crt

# SH-Syntax (auch für bash und ähnliche)
BASE_FILENAME=`hostname`
key=${BASE_FILENAME}.key
csr=${BASE_FILENAME}.csr
crt=${BASE_FILENAME}.crt

SSL Schlüssel, CSR und Zertifikat erstellen

cd /usr/local/etc/nginx

# Schlüssel generieren
openssl genrsa -out ${key} 2048
# CSR erstellen (FQDN als Common Name eingeben!)
openssl req -new -key ${key} -out ${csr}
# Signiertes Zertifikat erstellen
openssl x509 -req -days 3650 -in ${csr} -signkey ${key} -out ${crt}

# Korrekte Dateinamen in nginx.conf referenzieren
# Achtung: Nutzt man in der nginx.conf mehrere unterschiedliche
# Zertifikate, ist das Ersetzen sämtlicher Vorkommnisse laut
# folgender Kommandos wahrscheinlich unerwünscht.
sed -i '' -e "s/^ *ssl_certificate_key .*/        ssl_certificate_key  ${key};/g" /usr/local/etc/nginx/nginx.conf
sed -i '' -e "s/^ *ssl_certificate .*/        ssl_certificate      ${crt};/g" /usr/local/etc/nginx/nginx.conf

openssl(1), sed(1)