#!/bin/sh SCRIPT=$(realpath "$0") DIR=$(dirname "$SCRIPT") CA="$DIR/ca" if [ ! -f "$CA.key" ]; then openssl req \ -x509 \ -sha256 \ -days 1825 \ -newkey rsa:2048 \ -keyout "$CA.key" \ -out "$CA.crt" fi if [ -n "$1" ]; then FILE="$DIR/$1" echo "Generating key for $1" openssl req \ -newkey rsa:2048 \ -nodes \ -keyout "$FILE.key" \ -out "$FILE.csr" echo "" cat < "$FILE.ext" authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = $1 EOF echo "" openssl x509 \ -req \ -CA "$CA.crt" \ -CAkey "$CA.key" \ -in "$FILE.csr" \ -out "$FILE.crt" \ -days 365 \ -CAcreateserial \ -extfile "$FILE.ext" echo "" echo "Creating PKCS12 archive" cat "$FILE.key" "$FILE.crt" | openssl pkcs12 -export -in - -out "$FILE.p12" else echo "USAGE: generate-key.sh KEYNAME" fi