Written by georg
on September 8, 2017
Es ist nicht ausreichend nur den Private Key zu überprüfen!
OpenSSL bietet auch eine einfache Möglichkeit einen CSR zu prüfen:
openssl req -in example.csr -verify verify OK
Beim Public Key wird es komplizierter. Einzig eine Prüfung mit der Signatur der übergeordneten CA hilft. Hier eine erste Version eines Prüfscriptes.
#!/bin/bash if [[ $# -ne 1 ]]; then echo "Wrong number of arguments." exit 1 fi FILE=$1 # Allows to configure different openssl version OPENSSL=$(which openssl) TEMPDIR="/tmp USERAGENT="CustomUserAgent" # A proxy server would also get configured here WGETOPTS="--user-agent=${USERAGENT} --timeout=5 --tries=1 -e" SIGNER=$($OPENSSL x509 -in ${FILE} -text -noout | grep "CA Issuers - URI:http" | cut -d":" -f2- | tr -d '\r') if [[ -z $SIGNER ]]; then echo "No issuer certificate found for download." exit 1 fi SIGNERFILE=$(awk -F'/' '{print $NF}' <<<$SIGNER) /usr/bin/wget $WGETOPTS $SIGNER -O $TEMPDIR/$SIGNERFILE >/dev/null 2>&1 # Try to convert to PEM $OPENSSL x509 -inform der -in $TEMPDIR/$SIGNERFILE -out $TEMPDIR/$SIGNERFILE.cer 2>/dev/null if [[ -s $TEMPDIR/$SIGNERFILE.cer ]]; then # use converted file, if conversation was successfull SIGNERFILE="$SIGNERFILE.cer" fi echo -n "Certificate verification: " $OPENSSL verify -CAfile $TEMPDIR/$SIGNERFILE -partial_chain $FILE 2>&1 | grep -e "certificate signature failure" -e "OK" | cut -d":" -f2 # Cleanup if [[ ! -z $SIGNERFILE ]]; then /bin/rm $TEMPDIR/$SIGNERFILE* fi
Schreibe einen Kommentar