1*758e9fbaSOystein Eftevaag#!/bin/bash 2*758e9fbaSOystein Eftevaag 3*758e9fbaSOystein Eftevaagset -x 4*758e9fbaSOystein Eftevaag 5*758e9fbaSOystein Eftevaag#set -euf 6*758e9fbaSOystein Eftevaag 7*758e9fbaSOystein Eftevaagecho "Creating ekcert for $1 => $3" 8*758e9fbaSOystein Eftevaagecho "Creating ekcert for $2 => $4" 9*758e9fbaSOystein Eftevaag 10*758e9fbaSOystein EftevaagROOTCRT=$6.crt 11*758e9fbaSOystein EftevaagROOTCRTPEM=$6.pem 12*758e9fbaSOystein EftevaagINTERMEDCRT=$5.crt 13*758e9fbaSOystein EftevaagROOTCRL=$6.crl 14*758e9fbaSOystein EftevaagINTERMEDCRL=$5.crl 15*758e9fbaSOystein Eftevaag 16*758e9fbaSOystein EftevaagEKCADIR="$(dirname $(realpath ${0}))/" 17*758e9fbaSOystein Eftevaag 18*758e9fbaSOystein EftevaagCA_DIR="$(mktemp -d ekca-XXXXXX)" 19*758e9fbaSOystein Eftevaag 20*758e9fbaSOystein Eftevaagpushd "$CA_DIR" 21*758e9fbaSOystein Eftevaag 22*758e9fbaSOystein Eftevaagmkdir root-ca 23*758e9fbaSOystein Eftevaagpushd root-ca 24*758e9fbaSOystein Eftevaag 25*758e9fbaSOystein Eftevaagmkdir certreqs certs crl newcerts private 26*758e9fbaSOystein Eftevaagtouch root-ca.index 27*758e9fbaSOystein Eftevaagecho 00 > root-ca.crlnum 28*758e9fbaSOystein Eftevaagecho 1000 > root-ca.serial 29*758e9fbaSOystein Eftevaagecho "123456" > pass.txt 30*758e9fbaSOystein Eftevaag 31*758e9fbaSOystein Eftevaagcp "${EKCADIR}/root-ca.cnf" ./ 32*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=./root-ca.cnf 33*758e9fbaSOystein EftevaagROOT_URL="file:$ROOTCRT" 34*758e9fbaSOystein Eftevaagsed -i "s|ROOTCRT|$ROOT_URL|g" $OPENSSL_CONF 35*758e9fbaSOystein EftevaagROOT_URL="file:$ROOTCRL" 36*758e9fbaSOystein Eftevaagsed -i "s|ROOTCRL|$ROOT_URL|g" $OPENSSL_CONF 37*758e9fbaSOystein Eftevaagopenssl req -new -out root-ca.req.pem -passout file:pass.txt 38*758e9fbaSOystein Eftevaag 39*758e9fbaSOystein Eftevaag# 40*758e9fbaSOystein Eftevaag# Create self signed root certificate 41*758e9fbaSOystein Eftevaag# 42*758e9fbaSOystein Eftevaagopenssl ca -selfsign \ 43*758e9fbaSOystein Eftevaag -in root-ca.req.pem \ 44*758e9fbaSOystein Eftevaag -out root-ca.cert.pem \ 45*758e9fbaSOystein Eftevaag -extensions root-ca_ext \ 46*758e9fbaSOystein Eftevaag -startdate `date +%y%m%d000000Z -u -d -1day` \ 47*758e9fbaSOystein Eftevaag -enddate `date +%y%m%d000000Z -u -d +10years+1day` \ 48*758e9fbaSOystein Eftevaag -passin file:pass.txt -batch 49*758e9fbaSOystein Eftevaag 50*758e9fbaSOystein Eftevaagopenssl x509 -outform der -in root-ca.cert.pem -out root-ca.cert.crt 51*758e9fbaSOystein Eftevaag 52*758e9fbaSOystein Eftevaagopenssl verify -verbose -CAfile root-ca.cert.pem \ 53*758e9fbaSOystein Eftevaag root-ca.cert.pem 54*758e9fbaSOystein Eftevaag 55*758e9fbaSOystein Eftevaagopenssl ca -gencrl -cert root-ca.cert.pem \ 56*758e9fbaSOystein Eftevaag -out root-ca.cert.crl.pem -passin file:pass.txt 57*758e9fbaSOystein Eftevaagopenssl crl -in root-ca.cert.crl.pem -outform DER -out root-ca.cert.crl 58*758e9fbaSOystein Eftevaag 59*758e9fbaSOystein Eftevaagpopd #root-ca 60*758e9fbaSOystein Eftevaag 61*758e9fbaSOystein Eftevaag# 62*758e9fbaSOystein Eftevaag# Create intermediate certificate 63*758e9fbaSOystein Eftevaag# 64*758e9fbaSOystein Eftevaagmkdir intermed-ca 65*758e9fbaSOystein Eftevaagpushd intermed-ca 66*758e9fbaSOystein Eftevaag 67*758e9fbaSOystein Eftevaagmkdir certreqs certs crl newcerts private 68*758e9fbaSOystein Eftevaagtouch intermed-ca.index 69*758e9fbaSOystein Eftevaagecho 00 > intermed-ca.crlnum 70*758e9fbaSOystein Eftevaagecho 2000 > intermed-ca.serial 71*758e9fbaSOystein Eftevaagecho "abcdef" > pass.txt 72*758e9fbaSOystein Eftevaag 73*758e9fbaSOystein Eftevaagcp "${EKCADIR}/intermed-ca.cnf" ./ 74*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=./intermed-ca.cnf 75*758e9fbaSOystein Eftevaag 76*758e9fbaSOystein Eftevaag# Adapt CRT URL to current test directory 77*758e9fbaSOystein Eftevaagsed -i "s|ROOTCRT|$ROOT_URL|g" $OPENSSL_CONF 78*758e9fbaSOystein Eftevaag 79*758e9fbaSOystein Eftevaagopenssl req -new -out intermed-ca.req.pem -passout file:pass.txt 80*758e9fbaSOystein Eftevaag 81*758e9fbaSOystein Eftevaagopenssl req -new \ 82*758e9fbaSOystein Eftevaag -key private/intermed-ca.key.pem \ 83*758e9fbaSOystein Eftevaag -out intermed-ca.req.pem \ 84*758e9fbaSOystein Eftevaag -passin file:pass.txt 85*758e9fbaSOystein Eftevaag 86*758e9fbaSOystein Eftevaagopenssl rsa -inform PEM -in private/intermed-ca.key.pem \ 87*758e9fbaSOystein Eftevaag -outform DER -out private/intermed-ca.key.der -passin file:pass.txt 88*758e9fbaSOystein Eftevaag 89*758e9fbaSOystein Eftevaagcp intermed-ca.req.pem \ 90*758e9fbaSOystein Eftevaag ../root-ca/certreqs/ 91*758e9fbaSOystein Eftevaag 92*758e9fbaSOystein EftevaagINTERMED_URL="file:$INTERMEDCRT" 93*758e9fbaSOystein Eftevaagsed -i "s|INTERMEDCRT|$INTERMED_URL|g" $OPENSSL_CONF 94*758e9fbaSOystein Eftevaag 95*758e9fbaSOystein Eftevaagpushd ../root-ca 96*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=./root-ca.cnf 97*758e9fbaSOystein Eftevaag 98*758e9fbaSOystein Eftevaagopenssl ca \ 99*758e9fbaSOystein Eftevaag -in certreqs/intermed-ca.req.pem \ 100*758e9fbaSOystein Eftevaag -out certs/intermed-ca.cert.pem \ 101*758e9fbaSOystein Eftevaag -extensions intermed-ca_ext \ 102*758e9fbaSOystein Eftevaag -startdate `date +%y%m%d000000Z -u -d -1day` \ 103*758e9fbaSOystein Eftevaag -enddate `date +%y%m%d000000Z -u -d +5years+1day` \ 104*758e9fbaSOystein Eftevaag -passin file:pass.txt -batch 105*758e9fbaSOystein Eftevaag 106*758e9fbaSOystein Eftevaagopenssl x509 -outform der -in certs/intermed-ca.cert.pem \ 107*758e9fbaSOystein Eftevaag -out certs/intermed-ca.cert.crt 108*758e9fbaSOystein Eftevaag 109*758e9fbaSOystein Eftevaagopenssl verify -verbose -CAfile root-ca.cert.pem \ 110*758e9fbaSOystein Eftevaag certs/intermed-ca.cert.pem 111*758e9fbaSOystein Eftevaag 112*758e9fbaSOystein Eftevaagcp certs/intermed-ca.cert.pem \ 113*758e9fbaSOystein Eftevaag ../intermed-ca 114*758e9fbaSOystein Eftevaag 115*758e9fbaSOystein Eftevaagcp certs/intermed-ca.cert.crt \ 116*758e9fbaSOystein Eftevaag ../intermed-ca 117*758e9fbaSOystein Eftevaag 118*758e9fbaSOystein Eftevaagpopd #root-ca 119*758e9fbaSOystein Eftevaag 120*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=./intermed-ca.cnf 121*758e9fbaSOystein Eftevaagopenssl ca -gencrl -cert ../root-ca/certs/intermed-ca.cert.pem \ 122*758e9fbaSOystein Eftevaag -out intermed-ca.crl.pem -passin file:pass.txt 123*758e9fbaSOystein Eftevaagopenssl crl -in intermed-ca.crl.pem -outform DER -out intermed-ca.crl 124*758e9fbaSOystein Eftevaag 125*758e9fbaSOystein Eftevaagpopd #intermed-ca 126*758e9fbaSOystein Eftevaag 127*758e9fbaSOystein Eftevaag# 128*758e9fbaSOystein Eftevaag# Create RSA EK certificate 129*758e9fbaSOystein Eftevaag# 130*758e9fbaSOystein Eftevaagmkdir ek 131*758e9fbaSOystein Eftevaagpushd ek 132*758e9fbaSOystein Eftevaag 133*758e9fbaSOystein Eftevaagcp "${EKCADIR}/ek.cnf" ./ 134*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=ek.cnf 135*758e9fbaSOystein Eftevaagecho "abc123" > pass.txt 136*758e9fbaSOystein Eftevaag 137*758e9fbaSOystein Eftevaag# Adapt CRT and CRL URL to current test directory 138*758e9fbaSOystein Eftevaag 139*758e9fbaSOystein EftevaagINTERMED_URL="file:$INTERMEDCRT" 140*758e9fbaSOystein Eftevaagsed -i "s|INTERMEDCRT|$INTERMED_URL|g" $OPENSSL_CONF 141*758e9fbaSOystein Eftevaag 142*758e9fbaSOystein EftevaagINTERMED_URL="file:$INTERMEDCRL" 143*758e9fbaSOystein Eftevaagsed -i "s|INTERMEDCRL|$INTERMED_URL|g" $OPENSSL_CONF 144*758e9fbaSOystein Eftevaag 145*758e9fbaSOystein Eftevaagcp "$1" ../intermed-ca/certreqs/ek.pub.pem 146*758e9fbaSOystein Eftevaag 147*758e9fbaSOystein Eftevaagopenssl req -new -nodes -newkey rsa:2048 -passin file:pass.txt -out ../intermed-ca/certreqs/nonsense.csr.pem 148*758e9fbaSOystein Eftevaag 149*758e9fbaSOystein Eftevaagpushd ../intermed-ca 150*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=./intermed-ca.cnf 151*758e9fbaSOystein Eftevaag 152*758e9fbaSOystein Eftevaagopenssl x509 -req -in certreqs/nonsense.csr.pem -force_pubkey certreqs/ek.pub.pem -out certs/ek.cert.der \ 153*758e9fbaSOystein Eftevaag -outform DER -extfile ../ek/ek.cnf -extensions ek_ext -set_serial 12345 \ 154*758e9fbaSOystein Eftevaag -CA intermed-ca.cert.pem -CAkey private/intermed-ca.key.pem -passin file:pass.txt 155*758e9fbaSOystein Eftevaag 156*758e9fbaSOystein Eftevaagcp certs/ek.cert.der ../ek 157*758e9fbaSOystein Eftevaag 158*758e9fbaSOystein Eftevaagpopd #intermed-ca 159*758e9fbaSOystein Eftevaag 160*758e9fbaSOystein Eftevaagpopd #EK 161*758e9fbaSOystein Eftevaag 162*758e9fbaSOystein Eftevaag# 163*758e9fbaSOystein Eftevaag# Create ECC EK Certificate 164*758e9fbaSOystein Eftevaag# 165*758e9fbaSOystein Eftevaagmkdir ekecc 166*758e9fbaSOystein Eftevaagpushd ekecc 167*758e9fbaSOystein Eftevaag 168*758e9fbaSOystein Eftevaagcp "${EKCADIR}/ek.cnf" ./ 169*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=ek.cnf 170*758e9fbaSOystein Eftevaagecho "abc123" > pass.txt 171*758e9fbaSOystein Eftevaag 172*758e9fbaSOystein Eftevaag# Adapt CRT and CRL URL to current test directory 173*758e9fbaSOystein Eftevaag 174*758e9fbaSOystein EftevaagINTERMED_URL="file:$INTERMEDCRT" 175*758e9fbaSOystein Eftevaagsed -i "s|INTERMEDCRT|$INTERMED_URL|g" $OPENSSL_CONF 176*758e9fbaSOystein Eftevaag 177*758e9fbaSOystein EftevaagINTERMED_URL="file:$INTERMEDCRL" 178*758e9fbaSOystein Eftevaagsed -i "s|INTERMEDCRL|$INTERMED_URL|g" $OPENSSL_CONF 179*758e9fbaSOystein Eftevaag 180*758e9fbaSOystein Eftevaagcp "$2" ../intermed-ca/certreqs/ekecc.pub.pem 181*758e9fbaSOystein Eftevaag 182*758e9fbaSOystein Eftevaagopenssl req -new -nodes -newkey rsa:2048 -passin file:pass.txt -out ../intermed-ca/certreqs/nonsense.csr.pem 183*758e9fbaSOystein Eftevaag 184*758e9fbaSOystein Eftevaagpushd ../intermed-ca 185*758e9fbaSOystein Eftevaagexport OPENSSL_CONF=./intermed-ca.cnf 186*758e9fbaSOystein Eftevaag 187*758e9fbaSOystein Eftevaagopenssl x509 -req -in certreqs/nonsense.csr.pem -force_pubkey certreqs/ekecc.pub.pem -out certs/ekecc.cert.der \ 188*758e9fbaSOystein Eftevaag -outform DER -extfile ../ek/ek.cnf -extensions ek_ext -set_serial 12345 \ 189*758e9fbaSOystein Eftevaag -CA intermed-ca.cert.pem -CAkey private/intermed-ca.key.pem -passin file:pass.txt 190*758e9fbaSOystein Eftevaag 191*758e9fbaSOystein Eftevaagcp certs/ekecc.cert.der ../ekecc 192*758e9fbaSOystein Eftevaag 193*758e9fbaSOystein Eftevaagpopd #intermed-ca 194*758e9fbaSOystein Eftevaag 195*758e9fbaSOystein Eftevaagpopd #EK 196*758e9fbaSOystein Eftevaag 197*758e9fbaSOystein Eftevaagpopd #CA_DIR 198*758e9fbaSOystein Eftevaag 199*758e9fbaSOystein Eftevaag# Copy used CRL and CRT files to test directory. 200*758e9fbaSOystein Eftevaag 201*758e9fbaSOystein Eftevaagcp "${CA_DIR}/ek/ek.cert.der" "$3" 202*758e9fbaSOystein Eftevaagcp "${CA_DIR}/ekecc/ekecc.cert.der" "$4" 203*758e9fbaSOystein Eftevaagcp "${CA_DIR}/intermed-ca/intermed-ca.cert.crt" "$INTERMEDCRT" 204*758e9fbaSOystein Eftevaagcp "${CA_DIR}/intermed-ca/intermed-ca.crl" "$INTERMEDCRL" 205*758e9fbaSOystein Eftevaagcp "${CA_DIR}/root-ca/root-ca.cert.crt" "$ROOTCRT" 206*758e9fbaSOystein Eftevaagcp "${CA_DIR}/root-ca/root-ca.cert.crl" "$ROOTCRL" 207*758e9fbaSOystein Eftevaagcp "${CA_DIR}/root-ca/root-ca.cert.pem" "$ROOTCRTPEM" 208*758e9fbaSOystein Eftevaag 209*758e9fbaSOystein Eftevaagrm -rf $CA_DIR 210