# (Zwischen-)Zertifikat Key und Zertifikatsrequest per Script auf Plausibilität prüfen

Dieses Script prüft folgende Punkte:

<div id="bkmrk-mind.-4096-bit-key-p"><div>- <div>mind. 4096 Bit Key</div>
- <div>Passen CSR, CRT, KEY zusammen (openssl modulus / md5)?</div>
- <div>Signatur-Hash prüfen</div>
- <div>Passt das Intermediate-CRT zum CRT</div>

</div></div>Namenskonvention der Dateien:

<div id="bkmrk-meine-domain.de.key-">- <div>meine-domain.de.key</div>
- <div>meine-domain.de.crt</div>
- <div>meine-domain.de.csr</div>
- <div>meine-domain.de.intermediates</div>

```shell
#!/bin/bash<br></br>#<br></br># check if certificate, signing request and key match<br></br>#<br></br><br></br>if [ "x$1" = "x" ]; then<br></br>  echo "Usage: $0 <filename without .key, .crt, .csr or .intermediates>"<br></br>  exit 1<br></br>fi<br></br><br></br>if [ -e $1.key ]; then<br></br>  output="$1.key: `openssl rsa -noout -modulus -in $1.key | openssl md5 | cut -d" " -f2`"<br></br>  key_size=`openssl rsa -noout -text -in $1.key | grep "Private-Key" | cut -d" " -f2 | cut -d"(" -f2`<br></br>  if [ $key_size -lt 4096 ]; then<br></br>    output="$output \e[39m(key size: \e[33m$key_size\e[39m bit)"<br></br>  else<br></br>    output="$output \e[39m(key size: \e[32m$key_size\e[39m bit)"<br></br>  fi<br></br>  echo -e $output<br></br>else<br></br>  echo "$1.key: file not found"<br></br>fi<br></br><br></br>if [ -e $1.csr ]; then<br></br>  echo -n "$1.csr: "<br></br>  openssl req -noout -modulus -in $1.csr | openssl md5 | cut -d" " -f2<br></br>else<br></br>  echo "$1.csr: file not found"<br></br>fi<br></br><br></br>if [ -e $1.crt ]; then<br></br>  echo -n "$1.crt: "<br></br>  openssl x509 -noout -modulus -in $1.crt | openssl md5 | cut -d" " -f2<br></br>else<br></br>  echo "$1.crt: file not found"<br></br>fi<br></br><br></br>if [ -e $1.intermediates ]; then<br></br>  echo -n "$1.intermediates: "<br></br>  subject=`openssl x509 -noout -subject_hash -in $1.intermediates`<br></br>  issuer=`openssl x509 -noout -issuer_hash -in $1.crt`<br></br>  if [ "$subject" != "" -o "$issuer" != "" ]; then<br></br>    if [ "$subject" == "$issuer" ]; then<br></br>      signature=`openssl x509 -noout -text -in $1.intermediates | grep "Signature Algorithm:" | cut -d" " -f7 | head -n1`<br></br>      echo -e "\e[32missuer matches subject \e[39m- signature hash: \e[32m$signature\e[39m"<br></br>    else<br></br>      echo -e "\e[31missuer doesn't match subject"<br></br>    fi<br></br>  fi<br></br>  chown root:root $1.intermediates<br></br>  chmod 0600 $1.key $1.csr $1.crt $1.intermediates<br></br>else<br></br>  echo "$1.intermediates: file not found"<br></br>fi
```

</div>