#!/bin/bash VERSION="v2021101100" # Voreinstellungen / für 5G sollen (zukünftig nur noch) ecdsa-Schlüssel verwendet werden # https://www.ssl.com/how-to/manually-generate-a-certificate-signing-request-csr-using-openssl/#ftoc-heading-3 ZEITRAUM="365" # Gültigkeitszeitraum 1 Jahr BITLANG="384" # Schlüssellänge (EC) if [ -z "${1}" ] ; then echo "${0} -h" exit 1 fi while [ "${#}" -ne "0" ]; do case "${1}" in -d) DOMAIN=${2} # neuen oder vorhandenen Schlüssel verwenden shift ;; -k) KEY=${2} # neuen oder vorhandenen Schlüssel verwenden shift ;; -s) STAAT=${2} # z.B.: DE shift ;; -l) LAND=${2} # z.B.: Hessen shift ;; -c) STADT=${2} # z.B.: Idstein shift ;; -o) ORGANISATION=${2} # Mandant shift ;; -a) ABTEILUNG=${2} # Marke shift ;; -m) EMAIL=${2} # z.B.: ssladmin@iq-optimize.de shift ;; -z) ZEITRAUM=${2} # Gültigkeitszeitraum: 730 shift ;; -b) BITLANG=${2} # Schlüssellänge: 4096 shift ;; -h) echo " zwingend erforderliche Parameter: -d Domain/FQDN -l Land -c City/Stadt -o Organisation/Mandant -a Abteilung/Marke optionale Parameter: -k Key-Datei der schon existiert -s Staat -m Mail -z Zeitraum der Gültigkeit -b Bit-Länge des Schlüssels Beispiele wild-card-Zertifikat mit neuem Schlüssel: # ${0} -d '*.telco.de' -l Hessen -c Maintal -o Drillisch -a telco Standard-Zertifikat mit vorhandenem Schlüssel: # ${0} -d www.telco.de -s DE -l Hessen -c Maintal -o Drillisch -a telco -k www.telco.de.key -m ssladmin@iq-optimize.de " exit 0 ;; *) if [ "$(echo "${1}"|egrep '^-')" ] ; then echo "Der Parameter '${1}' wird nicht unterstützt!" exit 1 fi shift ;; esac done if [ -z "${STAAT}" ] ; then STAAT="DE" fi if [ -z "${EMAIL}" ] ; then EMAIL="ssladmin@iq-optimize.de" fi ZNAME="$(echo "${DOMAIN}" | tr -s '[*]' 'w')" if [ -z "${DOMAIN}" -o -z "${LAND}" -o -z "${STADT}" -o -z "${ORGANISATION}" -o -z "${ABTEILUNG}" ] ; then echo " Es werden alle Parameter benötigt! => ${0} -h " exit 1 fi if [ -z "${KEY}" ] ; then # neuer Schlüssel echo "openssl req -rand /dev/urandom -sha256 -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-${BITLANG}) -nodes -keyout ${ZNAME}.key - keyform PEM -out ${ZNAME}.csr -outform PEM -subj \"/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}\" -days ${ZEITRAUM}" #echo "openssl req -rand /dev/urandom -sha256 -newkey ec:<(openssl ecparam -name secp384r1) -nodes -keyout ${ZNAME}.key -keyform PEM -out ${ZNAME}.csr -outform PEM -sub j \"/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}\" -days ${ZEITRAUM}" openssl req -rand /dev/urandom -sha256 -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-${BITLANG}) -nodes -keyout ${ZNAME}.key -keyfor m PEM -out ${ZNAME}.csr -outform PEM -subj "/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}" -days ${ZEITRAUM} #openssl req -rand /dev/urandom -sha256 -newkey ec:<(openssl ecparam -name secp384r1) -nodes -keyout ${ZNAME}.key -keyform PEM -out ${ZNAME}.csr -outform PEM -subj "/em ailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}" -days ${ZEITRAUM} else if [ -r "${KEY}" ] ; then # vorhandener Schlüssel echo "openssl req -new -key ${KEY} -keyform PEM -out ${ZNAME}.csr -outform PEM -subj \"/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION} /OU=${ABTEILUNG}/CN=${DOMAIN}\" -days ${ZEITRAUM}" openssl req -new -key ${KEY} -keyform PEM -out ${ZNAME}.csr -outform PEM -subj "/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${A BTEILUNG}/CN=${DOMAIN}" -days ${ZEITRAUM} else echo "die Datei ${KEY} ist nicht lesbar..." exit 1 fi fi if [ -r "${ZNAME}.csr" ] ; then echo "${ZNAME}.csr $(openssl req -text -verify -in ${ZNAME}.csr)" fi if [ -r "${KEY}" ] ; then # nur bei RSA-Schlüsseln haben Schlüssel, Zertifikatsanfrage und Zertifikat den gleichen Modulus echo "${KEY} $(openssl ec -noout -text -in ${KEY} | openssl md5)" fi if [ -r "${ZNAME}.csr" ] ; then echo "${ZNAME}.csr $(openssl req -noout -modulus -in ${ZNAME}.csr | openssl md5)" fi if [ -r "${ZNAME}.crt" ] ; then echo "${ZNAME}.crt $(openssl x509 -noout -modulus -in ${ZNAME}.crt | openssl md5)" fi