[LON-CAPA-cvs] cvs: loncom / request_ssl_key.sh

raeburn raeburn@source.lon-capa.org
Tue, 27 Jan 2009 01:23:26 -0000


raeburn		Tue Jan 27 01:23:26 2009 EDT

  Modified files:              
    /loncom	request_ssl_key.sh 
  Log:
  - Need to check for the existence (an ownership) of /home/httpd/lonCerts if run as www.
  - If the script is actually run from within /home/httpd/lonCerts, lonKey.pem doesn't need to be copied (and shouldn't be removed). 
  
  
Index: loncom/request_ssl_key.sh
diff -u loncom/request_ssl_key.sh:1.1 loncom/request_ssl_key.sh:1.2
--- loncom/request_ssl_key.sh:1.1	Thu Nov 18 23:25:10 2004
+++ loncom/request_ssl_key.sh	Tue Jan 27 01:23:26 2009
@@ -3,7 +3,28 @@
 MAILADDR=certificate@lon-capa.org	# Email the cert request here.
 DESTDIR=/home/httpd/lonCerts			# Destination for the key file.
 DESTUID=www			# Who will own the private key.
-DESTGROUP=www			# Gropu that owns the private key.
+DESTGROUP=www			# Group that will own the private key.
+
+if [ $(whoami) != "$DESTUID" ] && [ $(whoami) != "root" ]; then
+    echo "This script needs to be run either as $DESTUID or root"
+    exit
+fi
+
+if [ $(whoami) != "root" ] ; then
+    if [ -d "$DESTDIR" ] ; then
+        CURROWNER=`stat -c %U $DESTDIR`
+        if [ -L "$DESTDIR" ] ; then
+            echo "$DESTDIR is a symbolic link. You need to remove the link and (as root) create $DESTDIR as a directory owned by $DESTUID:$DESTGROUP."
+            exit
+        elif [ $CURROWNER != $DESTUID ] ; then
+            echo "$DESTUID is not the owner of $DESTDIR. As root you need to change ownership of this directory to $DESTUID:$DESTGROUP."
+            exit
+        fi
+    else
+        echo "You need to create a directory: $DESTDIR (as root) and then change ownership of this directory so it is owned by $DESTUID:$DESTGROUP."
+        exit
+    fi
+fi
 
 openssl req -newkey rsa:1024 -passout pass:loncapa \
     -keyout lonKey.enc -keyform PEM  \
@@ -11,9 +32,18 @@
 
 openssl rsa -passin pass:loncapa -in lonKey.enc -out lonKey.pem
 
-install -d -m 0750 -o $DESTUID -g $DESTGROUP $DESTDIR
-install -m 0400 -o $DESTUID -g $DESTGROUP lonKey.pem $DESTDIR
-rm lonKey.{enc,pem}
+if [ $(pwd) != "$DESTDIR" ] ; then
+    if [ !-d "$DESTDIR" ] ; then
+        install -d -m 0750 -o $DESTUID -g $DESTGROUP $DESTDIR
+    fi
+    install -m 0400 -o $DESTUID -g $DESTGROUP lonKey.pem $DESTDIR
+    rm lonKey.pem
+else
+    chmod 0400 lonKey.pem
+fi
+
+rm lonKey.enc
+
 
 mail <CertRequest.pem -s "Certificate Request" $MAILADDR
 rm CertRequest.pem