From 9e3f2290d1fddb64c59de3d265e9228a334e9682 Mon Sep 17 00:00:00 2001 From: Clinton Ebadi Date: Fri, 25 Apr 2014 17:32:50 -0400 Subject: [PATCH] domtool-addcert: use domtool-config, support non-afs cert/key dirs Removed `chown -R domtool.nogroup' calls since they are meaningless in afs and incorrect on normal file systems. chown -R the key dir to the user.nogroup unless `-unsafe' is passed, which allows the creation of useless keys (the user running the script can read the key instead of the intended user, which is ok for development). Still needs improvement. --- scripts/domtool-addcert | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/scripts/domtool-addcert b/scripts/domtool-addcert index 6e58197..25533b1 100755 --- a/scripts/domtool-addcert +++ b/scripts/domtool-addcert @@ -6,16 +6,28 @@ if test -z "$USER"; then exit 1 fi - KEYDIR=/afs/hcoop.net/common/etc/domtool/keys/$USER + KEYDIR=`domtool-config -path cert keys`/$USER KEYFILE=$KEYDIR/key.pem -CERTFILE=/afs/hcoop.net/common/etc/domtool/certs/$USER.pem +CERTFILE=`domtool-config -path cert certs`/$USER.pem NEWREQ=~/.newreq.pem NEW=~/.new.pem KEYIN=~/.keyin + CACONF=`domtool-config -path cert ca`/domtool-openssl.conf mkdir $KEYDIR || echo Key directory already exists. -openssl genrsa -out $KEYFILE -chown -R domtool.nogroup $KEYDIR +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 @@ -23,13 +35,23 @@ 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 $CERTFILE -infiles $NEW rm $NEW -chown domtool.nogroup $CERTFILE +#chown domtool.nogroup $CERTFILE -- 2.20.1