Certificate Pinning

Submitted by admin on So, 11.12.2016 - 11:13

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.