Report abuse

#!/bin/bash
#
# Script to generate host key and csr in the current directory, simply pass
# a desired common name as first param

HOSTNAME=$1
OPENSSL=/usr/bin/openssl
LOGGER=/usr/bin/logger
CFILE=/tmp/openssl.cf.$$
CA=/home/ca/myca

if [ ! -f ${CA}/Makefile ];
then
        echo "ERROR: The CA in ${CA} is not available"
        exit 1
fi

if [ "x${HOSTNAME}" = "x" ];
then
        echo "ERROR: Please specify a hostname on the commandline"
        exit 1
fi

if [ -f ${HOSTNAME}.key ] || [ -f ${HOSTNAME}.csr ];
then
        echo "ERROR: ${HOSTNAME}.key or ${HOSTNAME}.csr already exit, cannot run"
        exit 1
fi

cat <<@eof > $CFILE
[req]
prompt = no
distinguished_name = dn-param

[dn-param]
C = GB
ST = London
O = Your Company
OU = PKI
CN = $HOSTNAME
emailAddress = sysadmin@you.com
@eof

${OPENSSL} req -config ${CFILE} -nodes -newkey rsa:2048 -keyout ${HOSTNAME}.key -out ${HOSTNAME}.csr
${LOGGER} -t ca "Generated new certificate, key and csr for ${HOSTNAME}"

if [ -f ${HOSTNAME}.key ] && [ -f ${HOSTNAME}.csr ];
then
        echo "The following files have been created:"
        echo "   Key: ${HOSTNAME}.key"
        echo "   CSR: ${HOSTNAME}.csr"
        echo

        OLDDIR=`pwd`

        cp ${HOSTNAME}.csr ${CA}
        cd ${CA}

        make sign
        if [ -f ${HOSTNAME}.cert ];
        then
                mv ${HOSTNAME}.cert ${OLDDIR}/${HOSTNAME}.cert
                cd ${OLDDIR}
                echo 
                echo "The certificate has been created in ${HOSTNAME}.cert"
        else
                echo "ERROR: Creation of ${HOSTNAME}.cert failed"
                exit 1
        fi


else
        echo "ERROR: certificate creation failed, ${HOSTNAME}.key and ${HOSTNAME}.csr migth be bogus, please rm"
fi

rm -f /tmp/openssl.cf.$$