X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/ea459e3e5eea2a0015649fb987abda7d7e925c78..ec76f5e64acbc68248b1555f4ba74594be8b939b:/scripts/domtool-addcert diff --git a/scripts/domtool-addcert b/scripts/domtool-addcert index 6e58197..9b5495b 100755 --- a/scripts/domtool-addcert +++ b/scripts/domtool-addcert @@ -6,16 +6,34 @@ if test -z "$USER"; then exit 1 fi - KEYDIR=/afs/hcoop.net/common/etc/domtool/keys/$USER +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/$USER.pem - NEWREQ=~/.newreq.pem - NEW=~/.new.pem - KEYIN=~/.keyin +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 -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 +41,26 @@ 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.nogroup $CERTFILE +rm $WORKDIR -rf +#chown domtool.nogroup $CERTFILE