Das folgende Skript erzeugt SHA256 Hashes aus einem X.509 Zertifikat, so dass man es als Header für certificate-pinning verwenden kann.

#!/bin/bash

KEY="$1"

if [ -z ${KEY} ]; then
echo "usage: $0 <key>"
echo
exit 1
fi

MODE=""

openssl x509 -in "${KEY}" > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
MODE="CRT"
fi

openssl rsa -in "${KEY}" > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
MODE="KEY"
fi

if [ "$MODE" == "CRT" ]; then
SHA256=$(openssl x509 -in "${KEY}" -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64)
fi


if [ "$MODE" == "KEY" ]; then
SHA256=$(openssl rsa -in "${KEY}" -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -base64)
fi

echo "$SHA256"
Als Parameter ist ein Filename anzugeben, unter dem das Zertifikat zu finden ist.