📄 makekeys.sh
字号:
#!/bin/sh# Helper script to create CA and server certificates.srcdir=${1-.}OPENSSL=${OPENSSL-openssl}CONF=${srcdir}/openssl.confREQ="${OPENSSL} req -config ${CONF}"CA="${OPENSSL} ca -config ${CONF} -batch"# MKCERT makes a self-signed certMKCERT="${REQ} -x509 -new -days 9000"REQDN=reqDNSTRMASK=defaultexport REQDN STRMASKset -exmkdir catouch ca/index.txtecho 01 > ca/serial${OPENSSL} genrsa -rand ${srcdir}/../configure > ca/key.pem${OPENSSL} genrsa -rand ${srcdir}/../configure > client.key${MKCERT} -key ca/key.pem -out ca/cert.pem <<EOFUSCaliforniaOaklandNeosignRandom Deptnowhere.example.comneon@webdav.orgEOF# Function to generate appropriate output for `openssl req'.csr_fields() {CN=${2-"localhost"}OU=${1-"Neon QA Dept"}Org=${3-"Neon Hackers Ltd"}Locality=${4-"Cambridge"}State=${5-"Cambridgeshire"}cat <<EOFGB${State}${Locality}${Org}${OU}${CN}neon@webdav.org..EOF}csr_fields | ${REQ} -new -key ${srcdir}/server.key -out server.csrcsr_fields "Upper Case Dept" lOcALhost | \${REQ} -new -key ${srcdir}/server.key -out caseless.csrcsr_fields "Use AltName Dept" nowhere.example.com | \${REQ} -new -key ${srcdir}/server.key -out altname1.csrcsr_fields "Two AltName Dept" nowhere.example.com | \${REQ} -new -key ${srcdir}/server.key -out altname2.csrcsr_fields "Third AltName Dept" nowhere.example.com | \${REQ} -new -key ${srcdir}/server.key -out altname3.csrcsr_fields "Fourth AltName Dept" localhost | \${REQ} -new -key ${srcdir}/server.key -out altname4.csrcsr_fields "Fifth Altname Dept" localhost | \${REQ} -new -key ${srcdir}/server.key -out altname5.csrcsr_fields "Self-Signed" | \${MKCERT} -key ${srcdir}/server.key -out ssigned.pemcsr_fields "Bad Hostname Department" nohost.example.com | \${MKCERT} -key ${srcdir}/server.key -out wrongcn.pem# default => T61Stringcsr_fields "`echo -e 'H\350llo World'`" localhost |${MKCERT} -key ${srcdir}/server.key -out t61subj.certSTRMASK=pkix # => BMPStringcsr_fields "`echo -e 'H\350llo World'`" localhost |${MKCERT} -key ${srcdir}/server.key -out bmpsubj.certSTRMASK=utf8only # => UTF8Stringcsr_fields "`echo -e 'H\350llo World'`" localhost |${MKCERT} -key ${srcdir}/server.key -out utf8subj.certSTRMASK=default### produce a set of CA certscsr_fields "First Random CA" "first.example.com" "CAs Ltd." Lincoln Lincolnshire | \${MKCERT} -key ${srcdir}/server.key -out ca1.pemcsr_fields "Second Random CA" "second.example.com" "CAs Ltd." Falmouth Cornwall | \${MKCERT} -key ${srcdir}/server.key -out ca2.pemcsr_fields "Third Random CA" "third.example.com" "CAs Ltd." Ipswich Suffolk | \${MKCERT} -key ${srcdir}/server.key -out ca3.pemcsr_fields "Fourth Random CA" "fourth.example.com" "CAs Ltd." Norwich Norfolk | \${MKCERT} -key ${srcdir}/server.key -out ca4.pemcat ca[1234].pem > calist.pem# Only works with a Linuxy hostname command: continue without it,# as appropriate tests are skipped if these fail.hostname=`hostname -s 2>/dev/null` || truedomain=`hostname -d 2>/dev/null` || truefqdn=`hostname -f 2>/dev/null` || trueif [ "x${hostname}.${domain}" = "x${fqdn}" ]; then csr_fields "Wildcard Cert Dept" "*.${domain}" | \ ${REQ} -new -key ${srcdir}/server.key -out wildcard.csr ${CA} -days 9000 -in wildcard.csr -out wildcard.certficsr_fields "Neon Client Cert" ignored.example.com | \${REQ} -new -key client.key -out client.csr### requests using special DN.REQDN=reqDN.doubleCNcsr_fields "Double CN Dept" "nohost.example.comlocalhost" | ${REQ} -new -key ${srcdir}/server.key -out twocn.csrREQDN=reqDN.CNfirstecho localhost | ${REQ} -new -key ${srcdir}/server.key -out cnfirst.csrREQDN=reqDN.missingCNecho GB | ${REQ} -new -key ${srcdir}/server.key -out missingcn.csrREQDN=reqDN.justEmailecho blah@example.com | ${REQ} -new -key ${srcdir}/server.key -out justmail.csr### don't put ${REQ} invocations after herefor f in server client twocn caseless cnfirst missingcn justmail; do ${CA} -days 900 -in ${f}.csr -out ${f}.certdonefor n in 1 2 3 4 5; do ${CA} -extensions altExt${n} -days 900 \ -in altname${n}.csr -out altname${n}.certdoneMKPKCS12="${OPENSSL} pkcs12 -export -passout stdin -in client.cert -inkey client.key"# generate a PKCS12 cert from the client cert: -passOUT because it's the# passphrase on the OUTPUT cert, confusing...echo foobar | ${MKPKCS12} -name "Just A Neon Client Cert" -out client.p12# generate a PKCS#12 cert with no password and a friendly nameecho | ${MKPKCS12} -name "An Unencrypted Neon Client Cert" -out unclient.p12# generate a PKCS#12 cert with no friendly nameecho | ${MKPKCS12} -out noclient.p12### a file containing a complete chaincat ca/cert.pem server.cert > chain.pem
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -