X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/906a79a6b13c8e20cfd8fd38e937f0c4e79318ff..ec76f5e64acbc68248b1555f4ba74594be8b939b:/scripts/domtool-addcert diff --git a/scripts/domtool-addcert b/scripts/domtool-addcert index 3fb6b82..9b5495b 100755 --- a/scripts/domtool-addcert +++ b/scripts/domtool-addcert @@ -6,30 +6,61 @@ if test -z "$USER"; then exit 1 fi - KEYDIR=/afs/hcoop.net/common/etc/domtool/keys/$1 +umask 0066 # Prevent others from reading any files creating on local fs + + WORKDIR=/tmp/domtool-keyreq + KEYDIR=`domtool-config -path cert keys`/$USER KEYFILE=$KEYDIR/key.pem -CERTFILE=/afs/hcoop.net/common/etc/domtool/certs/$1.pem - NEWREQ=~/.newreq.pem - NEW=~/.new.pem - KEYIN=~/.keyin - -mkdir -p $KEYDIR -openssl genrsa -out $KEYFILE -chown -R domtool.domtool $KEYDIR -fs sa $KEYDIR $USER read +CERTFILE=`domtool-config -path cert certs`/$USER.pem + NEWREQ=$WORKDIR/.newreq.pem + NEW=$WORKDIR/.new.pem + KEYIN=$WORKDIR/.keyin + NEWCERT=$WORKDIR/.cert + CACONF=`domtool-config -path cert ca`/domtool-openssl.conf + +mkdir $WORKDIR && chmod 700 $WORKDIR || (echo Cannot create work dir ; exit 1) + +mkdir $KEYDIR || echo Key directory already exists. +openssl genrsa -out $KEYFILE 4096 +# chown -R domtool.nogroup $KEYDIR +# chmod for non-afs systems +chmod 700 $KEYDIR +chmod 600 $KEYFILE +if [ "$2" != '-unsafe' ]; then + if [ -z "`getent passwd $USER`" ]; then + echo "$USER does not exist. This must be a server principal." + else + chown -R $USER.nogroup $KEYDIR + fi +fi + +fs sa $KEYDIR $USER read || echo This must be a server principal. echo "." >$KEYIN echo "." >>$KEYIN echo "." >>$KEYIN echo "." >>$KEYIN echo "." >>$KEYIN echo "$USER" >>$KEYIN -echo "$USER@hcoop.net" >>$KEYIN +# fixme: domtool-config -domain +echo "$USER@`domtool-config -domain`" >>$KEYIN echo "" >>$KEYIN echo "" >>$KEYIN openssl req -new -key $KEYFILE -out $NEWREQ -days 365 <$KEYIN rm $KEYIN cat $NEWREQ $KEYFILE >$NEW rm $NEWREQ -openssl ca -batch -config /etc/domtool/openssl.cnf -policy policy_anything -out $CERTFILE -infiles $NEW + +ROOTCMD="" +# Insecure CA is OK for development, and if the CA is in afs it is +# assumed the script is being run with sufficient +# permissions. Otherwise, become root to use the ca private key, +if [ ! -r $CACONF ]; then + ROOTCMD=sudo +fi + +$ROOTCMD openssl ca -batch -config `domtool-config -path cert ca`/domtool-openssl.conf -out $NEWCERT -infiles $NEW +$ROOTCMD chown `whoami` $NEWCERT +mv $NEWCERT $CERTFILE rm $NEW -chown domtool.domtool $CERTFILE +rm $WORKDIR -rf +#chown domtool.nogroup $CERTFILE