ca.sh

来自「一个用于点对点传输加密的工具包源码」· Shell 代码 · 共 133 行

SH
133
字号
#!/bin/sh## CA - wrapper around ca to make it easier to use ... basically ca requires#      some setup stuff to be done before you can use it and this makes#      things easier between now and when Eric is convinced to fix it :-)## CA -newca ... will setup the right stuff# CA -newreq ... will generate a certificate request # CA -sign ... will sign the generated request and output ## At the end of that grab newreq.pem and newcert.pem (one has the key # and the other the certificate) and cat them together and that is what# you want/need ... I'll make even this a little cleaner later.### 12-Jan-96 tjh    Added more things ... including CA -signcert which#                  converts a certificate to a request and then signs it.# 10-Jan-96 eay    Fixed a few more bugs and added the SSLEAY_CONFIG#		   environment variable so this can be driven from#		   a script.# 25-Jul-96 eay    Cleaned up filenames some more.# 11-Jun-96 eay    Fixed a few filename missmatches.# 03-May-96 eay    Modified to use 'ssleay cmd' instead of 'cmd'.# 18-Apr-96 tjh    Original hacking## Tim Hudson# tjh@cryptsoft.com## default openssl.cnf file has setup as per the following# demoCA ... where everything is storedDAYS="-days 365"REQ="openssl req $SSLEAY_CONFIG"CA="openssl ca $SSLEAY_CONFIG"VERIFY="openssl verify"X509="openssl x509"CATOP=./demoCACAKEY=./cakey.pemCACERT=./cacert.pemfor idocase $i in-\?|-h|-help)    echo "usage: CA -newcert|-newreq|-newca|-sign|-verify" >&2    exit 0    ;;-newcert)     # create a certificate    $REQ -new -x509 -keyout newreq.pem -out newreq.pem $DAYS    RET=$?    echo "Certificate (and private key) is in newreq.pem"    ;;-newreq)     # create a certificate request    $REQ -new -keyout newreq.pem -out newreq.pem $DAYS    RET=$?    echo "Request (and private key) is in newreq.pem"    ;;-newca)         # if explicitly asked for or it doesn't exist then setup the directory    # structure that Eric likes to manage things     NEW="1"    if [ "$NEW" -o ! -f ${CATOP}/serial ]; then	# create the directory hierarchy	mkdir ${CATOP} 	mkdir ${CATOP}/certs 	mkdir ${CATOP}/crl 	mkdir ${CATOP}/newcerts	mkdir ${CATOP}/private	echo "01" > ${CATOP}/serial	touch ${CATOP}/index.txt    fi    if [ ! -f ${CATOP}/private/$CAKEY ]; then	echo "CA certificate filename (or enter to create)"	read FILE	# ask user for existing CA certificate	if [ "$FILE" ]; then	    cp $FILE ${CATOP}/private/$CAKEY	    RET=$?	else	    echo "Making CA certificate ..."	    $REQ -new -x509 -keyout ${CATOP}/private/$CAKEY \			   -out ${CATOP}/$CACERT $DAYS	    RET=$?	fi    fi    ;;-xsign)    $CA -policy policy_anything -infiles newreq.pem     RET=$?    ;;-sign|-signreq)     $CA -policy policy_anything -out newcert.pem -infiles newreq.pem    RET=$?    cat newcert.pem    echo "Signed certificate is in newcert.pem"    ;;-signcert)     echo "Cert passphrase will be requested twice - bug?"    $X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem    $CA -policy policy_anything -out newcert.pem -infiles tmp.pem    cat newcert.pem    echo "Signed certificate is in newcert.pem"    ;;-verify)     shift    if [ -z "$1" ]; then	    $VERIFY -CAfile $CATOP/$CACERT newcert.pem	    RET=$?    else	for j	do	    $VERIFY -CAfile $CATOP/$CACERT $j	    if [ $? != 0 ]; then		    RET=$?	    fi	done    fi    exit 0    ;;*)    echo "Unknown arg $i";    exit 1    ;;esacdoneexit $RET

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?