1 1.1 joerg #!/bin/sh 2 1.1 joerg # 3 1.3 nia # $NetBSD: pkgsrc.sh,v 1.3 2021/04/10 19:49:59 nia Exp $ 4 1.1 joerg # 5 1.1 joerg 6 1.1 joerg CA="openssl ca -config pkgsrc.cnf" 7 1.1 joerg REQ="openssl req -config pkgsrc.cnf" 8 1.1 joerg 9 1.1 joerg set -e 10 1.1 joerg 11 1.1 joerg new_ca() { 12 1.1 joerg if [ -f $1/serial ]; then 13 1.1 joerg echo "CA already exists, exiting" >& 2 14 1.1 joerg exit 1 15 1.1 joerg fi 16 1.1 joerg 17 1.1 joerg mkdir -p $1/certs $1/crl $1/newcerts $1/private 18 1.1 joerg echo "00" > $1/serial 19 1.1 joerg touch $1/index.txt 20 1.1 joerg 21 1.1 joerg echo "Making CA certificate ..." 22 1.1 joerg $REQ -new -keyout $1/private/cakey.pem \ 23 1.1 joerg -out $1/careq.pem 24 1.1 joerg $CA -out $1/cacert.pem -batch \ 25 1.1 joerg -keyfile $1/private/cakey.pem -selfsign \ 26 1.1 joerg -infiles $1/careq.pem 27 1.1 joerg } 28 1.1 joerg 29 1.1 joerg new_pkgkey() { 30 1.1 joerg $REQ -new -keyout pkgkey_key.pem -out pkgkey_req.pem 31 1.1 joerg $CA -extensions pkgkey -policy policy_match -out pkgkey_cert.pem -infiles pkgkey_req.pem 32 1.1 joerg rm pkgkey_req.pem 33 1.1 joerg echo "Signed certificate is in pkgkey_cert.pem, key in pkgkey_key.pem" 34 1.1 joerg } 35 1.1 joerg 36 1.1 joerg new_pkgsec() { 37 1.1 joerg $REQ -new -keyout pkgsec_key.pem -out pkgsec_req.pem 38 1.1 joerg $CA -extensions pkgsec -policy policy_match -out pkgsec_cert.pem -infiles pkgsec_req.pem 39 1.1 joerg rm pkgsec_req.pem 40 1.1 joerg echo "Signed certificate is in pkgsec_cert.pem, key in pkgsec_key.pem" 41 1.1 joerg } 42 1.1 joerg 43 1.1 joerg usage() { 44 1.1 joerg echo "$0:" 45 1.1 joerg echo "setup - create new CA in ./pkgsrc for use by pkg_install" 46 1.1 joerg echo "pkgkey - create and sign a certificate for binary packages" 47 1.1 joerg echo "pkgsec - create and sign a certificate for pkg-vulnerabilities" 48 1.1 joerg } 49 1.1 joerg 50 1.1 joerg case "$1" in 51 1.1 joerg setup) 52 1.1 joerg new_ca ./pkgsrc 53 1.1 joerg ;; 54 1.1 joerg pkgkey) 55 1.1 joerg new_pkgkey 56 1.1 joerg ;; 57 1.1 joerg pkgsec) 58 1.1 joerg new_pkgsec 59 1.1 joerg ;; 60 1.1 joerg *) 61 1.1 joerg usage 62 1.1 joerg ;; 63 1.1 joerg esac 64