set -eux
DAYS=10000
openssl req -config ca.conf -x509 -newkey rsa:2048 -out ca.pem -subj '/O=Cockpit/OU=test/CN=CA/' -nodes -days "$DAYS"
mkdir certs
touch index.txt
echo 01 > serial
for user in alice bob; do
openssl genrsa -out ${user}.key 2048
openssl req -new -key ${user}.key -out ${user}.csr -config ca.conf -subj "/CN=${user}/DC=COCKPIT/DC=LAN/"
openssl req -in ${user}.csr -text
openssl ca -batch -config ca.conf -in ${user}.csr -days "$DAYS" -notext -extensions usr_cert -out ${user}.pem -subj "/CN=${user}/DC=COCKPIT/DC=LAN/"
openssl pkcs12 -export -password pass:foo -in ${user}.pem -inkey ${user}.key -out ${user}.p12
done
rm index.txt*
touch index.txt
openssl ca -batch -config ca.conf -in alice.csr -days 1 -notext -extensions usr_cert -out alice-expired.pem -subj "/CN=alice/DC=COCKPIT/DC=LAN/"
rm -r certs
rm -- index.txt* serial* *.csr
update_fingerprint() {
local macro="$1"
local fp
fp="$(openssl x509 -in "$2" -noout -fingerprint -sha256)"
local fpc
fpc="$(cut -d= -f2 <<< "$fp" | tr -d ':' | tr '[:upper:]' '[:lower:]')"
sed -i "s/^#define $macro.*/#define $macro \"$fpc\"/" ../testing.h
echo " $macro: $fp"
}
update_fingerprint CLIENT_CERT_FINGERPRINT alice.pem
update_fingerprint CLIENT_EXPIRED_FINGERPRINT alice-expired.pem
update_fingerprint ALTERNATE_FINGERPRINT bob.pem