====== selbst signierte Zertifikate erstellen (EC) ======
siehe auch: [[::EDV:SSL-Schlüssel generieren]]
SSL-Schlüssel mit selbst signiertem Zertifikat erstellen:
> /root/bin/make_cert_ec.sh -d www.firma.de -l Hessen -c Frankfurt -o Firma -a Abteilung -u
zu einem bereits vorhandenem SSL-Schlüssel ein selbst signiertem Zertifikat erzeugen:
> /root/bin/make_cert_ec.sh -d www.test.de -l Mecklenburg -c Schwerin -o Test -a Abteilung -u -k w.firma.de.key
Zusammengehörigkeit von Schlüssel und Zertifikat überprüfen:
> /root/bin/ssl_check_ec.sh w.firma.de.*
read EC key
(stdin)= 81a482a5af36c8108cb80f1d7ccd4074 - w.firma.de.crt
(stdin)= 81a482a5af36c8108cb80f1d7ccd4074 - w.firma.de.key
> /root/bin/ssl_check_ec.sh w.firma.de.key w.test.de.crt
read EC key
(stdin)= 81a482a5af36c8108cb80f1d7ccd4074 - w.firma.de.key
(stdin)= 81a482a5af36c8108cb80f1d7ccd4074 - w.test.de.crt
#!/bin/bash
# Voreinstellungen
STAAT="DE" # Staat
EMAIL="default@domain.de" # eMail
ZEITRAUM="731" # Gültigkeitszeitraum in Tagen
BITLANG="384" # Schlüssellänge in Bit (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
;;
-u)
UNSIGNIERT=JA # Schlüssel mit unsigniertem Zertifikat erstellen
shift
;;
-s)
STAAT=${2} # z.B.: DE
shift
;;
-l)
LAND=${2} # z.B.: Hessen
shift
;;
-c)
STADT=${2} # z.B.: Frankfurt
shift
;;
-o)
ORGANISATION=${2} # Organisation
shift
;;
-a)
ABTEILUNG=${2} # Abteilung
shift
;;
-m)
EMAIL=${2} # z.B.: default@domain.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 '*.firma.de' -l Hessen -c Frankfurt -o Firma -a Abteilung
unsigniertes Standard-Zertifikat mit vorhandenem Schlüssel:
# ${0} -d www.firma.de -l Hessen -c Frankfurt -o Firma -a Abteilung -k www.firma.de.key -u
"
exit 0
;;
*)
if [ "$(echo "${1}"|egrep '^-')" ] ; then
echo "Der Parameter '${1}' wird nicht unterstützt!"
exit 1
fi
shift
;;
esac
done
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 mind. die Parameter -d, -l, -c, -o, und -a benötigt!
=> ${0} -h
"
exit 1
fi
if [ "${UNSIGNIERT}" == "JA" ] ; then
if [ -z "${KEY}" ] ; then
# neuer Schlüssel
KEY="${ZNAME}.key"
echo "openssl req -x509 -rand /dev/urandom -sha256 -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-${BITLANG}) -nodes -keyout ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj \"/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}\" -days ${ZEITRAUM}"
openssl req -x509 -rand /dev/urandom -sha256 -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-${BITLANG}) -nodes -keyout ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj "/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}" -days ${ZEITRAUM}
else
echo "openssl req -x509 -new -key ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj "/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}" -days ${ZEITRAUM}"
openssl req -x509 -new -key ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj "/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}" -days ${ZEITRAUM}
fi
else
if [ -z "${KEY}" ] ; then
# neuer Schlüssel
KEY="${ZNAME}.key"
echo "openssl req -x509 -rand /dev/urandom -sha256 -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-${BITLANG}) -nodes -keyout ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj \"/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}\" -days ${ZEITRAUM}"
openssl req -x509 -rand /dev/urandom -sha256 -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-${BITLANG}) -nodes -keyout ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj "/emailAddress=${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 -x509 -new -key ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj \"/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}\" -days ${ZEITRAUM}"
openssl req -x509 -new -key ${KEY} -keyform PEM -out ${ZNAME}.crt -outform PEM -subj "/emailAddress=${EMAIL}/C=${STAAT}/ST=${LAND}/L=${STADT}/O=${ORGANISATION}/OU=${ABTEILUNG}/CN=${DOMAIN}" -days ${ZEITRAUM}
else
echo "die Datei ${KEY} ist nicht lesbar..."
exit 1
fi
fi
fi
openssl ec -noout -text -in ${KEY}
openssl x509 -noout -text -in ${ZNAME}.crt
ls -lha ${KEY} ${ZNAME}.crt
#!/bin/bash
#------------------------------------------------------------------------------#
#
# NEU - Elliptic curve
# überprüft ob EC-SCHLÜSSEL, Zertifikatsanfrage und Zertifikat zusammen gehören
#
#------------------------------------------------------------------------------#
if [ -z "${1}" ] ; then
echo "${0} *.simplytel.de.*"
exit 1
fi
echo
for i in ${@}
do
ENDUNG="$(echo "${i}" | rev | awk -F'.' '{print $1}' | rev)"
if [ "${ENDUNG}" == "key" ] ; then
#echo "#------------------------------------------------------------------------------#"
#ls -lha ${i}
#openssl ec -noout -text -in ${i} | sed -ne '/pub:/,/ASN1 OID:/p' #| sed 's/^[ \t][ \t]*//'
MD5PRUEFSUMME_EC="$(openssl ec -noout -text -in ${i} | sed -ne '/pub:/,/ASN1 OID:/p' | sed 's/^[ \t][ \t]*//' | openssl md5)"
echo "${MD5PRUEFSUMME_EC} - ${i}"
#echo "#------------------------------------------------------------------------------#"
elif [ "${ENDUNG}" == "csr" ] ; then
#echo "#------------------------------------------------------------------------------#"
#ls -lha ${i}
#openssl req -noout -text -in ${i} | sed -ne '/pub:/,/ASN1 OID:/p' #| sed 's/^[ \t][ \t]*//'
MD5PRUEFSUMME_CSR="$(openssl req -noout -text -in ${i} | sed -ne '/pub:/,/ASN1 OID:/p' | sed 's/^[ \t][ \t]*//' | openssl md5)"
echo "${MD5PRUEFSUMME_CSR} - ${i}"
#echo "#------------------------------------------------------------------------------#"
elif [ "${ENDUNG}" == "crt" ] ; then
#echo "#------------------------------------------------------------------------------#"
#ls -lha ${i}
#openssl x509 -noout -text -in ${i} | sed -ne '/pub:/,/ASN1 OID:/p' #| sed 's/^[ \t][ \t]*//'
MD5PRUEFSUMME_CRT="$(openssl x509 -noout -text -in ${i} | sed -ne '/pub:/,/ASN1 OID:/p' | sed 's/^[ \t][ \t]*//' | openssl md5)"
echo "${MD5PRUEFSUMME_CRT} - ${i}"
#echo "#------------------------------------------------------------------------------#"
# else
# echo "${i} ..."
fi
done | sort -n
echo