iron.git

ref: a181c0d58140b57e934ea56cde97962f26c78a7d

iron/libexec/iron/iron-pkcs12


#! /bin/bash 
# Usage: $iron pkcs12 create  
# Summary: create *.p12 keystore
# Help: This command groups commands used to create pkcs#12 for distribution

APPNAME="iron"
CURRDIR=$(pwd)

RCDIR=$HOME/.$APPNAME
test -d $RCDIR || mkdir -p $RCDIR
CURRENT_TSTAMP=$(date '+%Y%m%d%H%M')

function certificate_sign()
{
	service=$1
	csrfile=$2
	client=$(basename $csrfile | sed -e 's/.csr$//')
	CLIENT_CERTPATH=$RCDIR/$service/certs
	CP=$CLIENT_CERTPATH/$client
	test -d ${CP} || mkdir -p ${CP}
	openssl x509 -req -days 365 -CA $CAPATH/ca.crt -CAkey $CAPATH/ca.key -CAcreateserial -in $csrfile -out $CP/$client.crt
}

function remote_client_write_setup()
{
	CLIENT_RCFILE="$RCDIR/client-$client"".env"
        echo "REMOTE_RCDIR=$RCDIR">${CLIENT_RCFILE}
        echo "REMOTE_USER=">>${CLIENT_RCFILE}
        echo "REMOTE_HOST=">>${CLIENT_RCFILE}
}


function remote_certificate_sign()
{
	service=$1
	remote_csr_user=$2
	remote_csr_host=$3
	remote_csrfile=$4
	csrfile=$(basename $remote_csrfile) 
	remote_certdir=$(dirname $remote_csrfile) 
	client=$(basename $csrfile | sed -e 's/.csr$//')
	CLIENT_CERTPATH=$RCDIR/$service/certs
	CP=$CLIENT_CERTPATH/$client 
	test -d ${CP} || mkdir -p ${CP}
	scp $remote_csr_user@$remote_csr_host:$remote_csrfile $CP/$client.csr
	openssl x509 -req -days 365 -CA $CAPATH/ca.crt -CAkey $CAPATH/ca.key -CAcreateserial -in $CP/$client.csr -out $CP/$client.crt
	scp $CP/$client.crt $REMOTE_USER@$REMOTE_HOST:$remote_certdir
}

function certificate_create()
{
	service=$1
	client=$2
	CLIENT_CERTPATH=$RCDIR/$service/certs
	CP=$CLIENT_CERTPATH/$client
	test -d ${CP} || mkdir -p ${CP}
	openssl x509 -req -days 365 -CA $CAPATH/ca.crt -CAkey $CAPATH/ca.key -CAcreateserial -in $CP/$client.csr -out $CP/$client.crt
	test -f $CP/$client.crt && echo "Created certificate in [$CP/$client.crt]"
}


function pkcs12_create()
{
	service=$1
	client=$2
	CLIENT_CERTPATH=$RCDIR/$service/certs
	CP=$CLIENT_CERTPATH/$client
	test -d ${CP} || mkdir -p ${CP}
        openssl pkcs12 -export -clcerts -in $CP/$client.crt -inkey $CP/$client.key -out $CP/$client.p12\
                 -name "${client}"\
                 -CAfile ${CAPATH}/ca.crt -caname root
	test -f $CP/$client.p12 && echo "Created PKCS12 (*.p12) in [$CP/$client.p12]"
}

if [ "$#" = 3 ];then
	operation=$1
	service=$2
	CA_RCFILE="$HOME/"."$APPNAME/default-ca"".env"
	source ${CA_RCFILE}

	if [ "$operation" = "create" ]; then
		client=$3
		pkcs12_create $service $client
	fi 

else
	echo "Usage:"
	echo "\$iron pkcs12   "
	exit -1
fi