| # |
| # Initialize a manual Cert. This is NOT entered in Certman Records |
| # |
| echo "FQI (Fully Qualified Identity): " |
| read FQI |
| if [ "$1" = "" -o "$1" = "-local" ]; then |
| echo "Personal Certificate" |
| SUBJECT="/CN=$FQI/OU=V1`cat subject.aaf`" |
| NAME=$FQI |
| else |
| echo "Application Certificate" |
| SUBJECT="/CN=$1/OU=$FQI`cat subject.aaf`" |
| FQDN=$1 |
| NAME=$FQDN |
| shift |
| |
| echo "Enter any SANS, delimited by spaces: " |
| read SANS |
| fi |
| |
| # Do SANs |
| if [ "$SANS" = "" ]; then |
| echo no SANS |
| if [ -e $NAME.san ]; then |
| rm $NAME.san |
| fi |
| else |
| echo some SANS |
| cp ../san.conf $NAME.san |
| NUM=1 |
| for D in $SANS; do |
| echo "DNS.$NUM = $D" >> $NAME.san |
| NUM=$((NUM+1)) |
| done |
| fi |
| |
| echo $SUBJECT |
| |
| if [ -e $NAME.csr ]; then |
| SIGN_IT=true |
| else |
| if [ "$1" = "-local" ]; then |
| echo "IMPORTANT: If for any reason, you kill this process, type 'stty sane'" |
| echo "Enter the PassPhrase for the Key for $FQI: " |
| `stty -echo` |
| read PASSPHRASE |
| `stty echo` |
| |
| # remove any previous Private key |
| rm private/$NAME.key |
| # Create j regaular rsa encrypted key |
| openssl req -new -newkey rsa:2048 -sha256 -keyout private/$NAME.key \ |
| -out $NAME.csr -outform PEM -subj "$SUBJECT" \ |
| -passout stdin << EOF |
| $PASSPHRASE |
| EOF |
| chmod 400 private/$NAME.key |
| SIGN_IT=true |
| else |
| echo openssl req -newkey rsa:2048 -sha256 -keyout $NAME.key -out $NAME.csr -outform PEM -subj '"'$SUBJECT'"' |
| echo chmod 400 $NAME.key |
| echo "# All done, print result" |
| echo openssl req -verify -text -noout -in $NAME.csr |
| fi |
| fi |
| |
| if [ "$SIGN_IT" = "true" ]; then |
| # Sign it |
| if [ -e $NAME.san ]; then |
| openssl ca -config ../openssl.conf -extensions server_cert -out $NAME.crt \ |
| -cert certs/ca.crt -keyfile private/ca.key \ |
| -policy policy_loose \ |
| -days 360 \ |
| -extfile $NAME.san \ |
| -infiles $NAME.csr |
| else |
| openssl ca -config ../openssl.conf -extensions server_cert -out $NAME.crt \ |
| -cert certs/ca.crt -keyfile private/ca.key \ |
| -policy policy_loose \ |
| -days 360 \ |
| -infiles $NAME.csr |
| fi |
| fi |
| |