From 6cb0aca0bf63dd2de0f40d3b41b71481892be9fc Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Fri, 24 Jan 2020 13:48:21 +0100 Subject: Add convenience script for generating certificate fingerprints --- .local/bin/crt-fp | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100755 .local/bin/crt-fp diff --git a/.local/bin/crt-fp b/.local/bin/crt-fp new file mode 100755 index 0000000..a764ba6 --- /dev/null +++ b/.local/bin/crt-fp @@ -0,0 +1,72 @@ +#! /usr/bin/env sh + +# This program is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) any +# later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +# details. + +main() +{ + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 + + # Generate fingerprint info for all certificates in question + for crt in "$@" + do + printf "%s: \n" "$crt" + for alg in md5 sha1 sha256 + do + printf " %-8s %s\n" "$alg" "$(fingerprint "$alg" "$crt")" + done + done +} + +fingerprint() +{ + openssl x509 -noout -fingerprint "-$1" -inform pem -in "$2" \ + | awk -F= '{ print $NF }' +} + +opts() +{ + OPTS=0 + + while getopts ":h" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done + + unset opt +} + +usage() +{ + cat <