Verify X509 Certificate

Written by  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

Category : Allgemein

Tags :

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.