License Expiration Dates



o New FusionGrid user

  1) User clicks "Request New Certificate"
        on http://cert.fusiongrid.org
     Activates /var/html/CertReqForm.html
        Fills out form
     Info handed to /var/cgi-bin/webRequestCert.py
        Checks user not already defined
        Checks for invalid data
     Key and certificate request generated
     Request enrolled in http://fluorite.es.net:9001
        with mail address set to FusionGridRA@pppl.gov
     Request information saved in directory /var/www/CertRequests
     Key information saved in directory /var/www/CertRequests

  2) Cadsg@es.net sends e-mail to FusionGridRA@pppl.gov
     A FusionGridRA@pppl.gov clicks on url given in e-mail
      and approves certificate request
     Approval notice is mailed to FGCM@pppl.gov

  3) Cronjob on blackbird.pppl.gov runs "loadCert.py" 
       every ten minutes
     LoadCert.py reads any e-mail in fgcm@pppl.gov
       with Subject "Your Certificate Request"
     Looks for success message
         Gets Distinguished Name
         Extracts Certficate
     Update myproxy on this computer (cert.fusiongrid.org)
     Enter user into roam.fusiongrid.org
     Move info file to /var/www/Users     
     Clean up /var/www/CertRequests
     Mail user can login to roam.fusiongrid.org
       and can use cert.fusiongrid.org for myproxy

  4) Cron job at 1:11AM will syncronize myproxy at
       roam.fusiongrid.org and then user can use
       roam.fusiongrid.org for myproxy

o Accept myproxy request from user

  1) /etc/init.d/myproxy started at boottime
     Uses /var/myproxy as location for proxy files
     /var/myproxy has been updated
       by loadCert.py, submitRenewal.py
  
  2) Normal myproxy actions
       which return proxy to user

o Renew user

  1) At 2AM, renewalMail.py is run by cron from account fgcm

  2) Gets list of processed renewal users from renewalDB

  3) Interates over new renewal notifications in 
       fgcm@pppl.gov mailbox
     Checks if user exists
     Checks if certificate has already expired
     Checks if user has already responded
     Else emails user to click 
       on declineRenewal URL or
       on renewCert URL

  4) Updates renewalDB

 - Process declineRenewal URL with user argument

   1) Get Certified Name (CN) from URL parameter
     
   2) Get list of processed renewal users from renewalDB
      Mark as declined in renewalDB

 - Process renewCert URL with user argument

   1) Get Certified Name (CN) from URL parameter

   2) Get list of processed renewal users from renewalDB
     
   3) Get user information and submit renewal
       requesting current passphrase
       URL used is submitRenewal.ps

 - Submit renewal activated

   1) Get form information including Certified Name

   2) Use password to load Credential of user

   3) Active HTTPs Request on fluorite.es.et:9002
        for certbasedenrollment
      And get response

   4) Replace user's key and certificate
      Update phone/email
      Update renewal database 
      Put success message submit renew from

o Change Certificate Password request

  1) http://cert.fusiongrid.org
       User clicks on "Change certificate password"
       https://cert.fusiongrid.org/changePassword.html
     Form asks for username, old password, 
       new password, verify new password, and
       password hint.
     and then posts to cgi-bin/changePass

  2) cgi-bin/changePass verifies user from
       /var/www/Users/*.info
     Invokes myproxy-admin-change-pass
     Checks return values     
 
     Looks for password hint
     Updates /var/www/Users/*.info for user

o Password Hint request

  1) http://cert.fusiongrid.org
       User clicks on "Password Hint"
       https://cert.fusiongrid.org/hintMailer.html
     Form asks for user name
     and then posts to cgi-bin/hint.py

  2) cgi-bin/hint.py verifies user from
       /var/www/Users/*.info
     Gets password hint from *.info
     Gets e-mail address from *.info
     Mails hint to user

o Forgotten password request

  1) http://cert.fusiongrid.org
       User clicks on "Forgotten Password"
       https://cert.fusiongrid.org/recoverCert.html
     Form requests user name, new password,
       verify new password, and password hint
     Posts to cgi-bin/recoverCert

  2) cgi-bin/recoverCert verifies user from
       /var/www/Users/*.info
     Gets CN (certificate name) from *.info
     Generates New key and cerificate request
       for this CN
     
     Generates http request using information
       from *.info
     Adds comment "CERT issue Request!'
     Connects request to flourite.esnet:9002
     Updates password and password hint
     Saves *.info and *-key.pem in CertRequests

  3) Now treated as new certificate request
     i.e. FusionGrid RA gets request in e-mail
       and approves

o Remove user (Disabled)
  Disabled since insecure once pbscookie broken

   1) To restore to eliminate user

     /bin/mkdir /var/www/html/a
     s=/var/www-auxiliary/html
     /bin/cp -ip $s/a/index.html /var/www/html/a

     /bin/mkdir /var/www/cgi-bin/p
     s=/var/www-auxiliary/cgi-bin
     /bin/cp -ip $s/p/removeUser.py /var/www/cgi-bin/p
     Note: hack in a name check in copied removeUser.py
       so only that user can be removed
     Note: below required before removeUser.py will work
     /bin/cp -ip $s/p/webRequest.py /var/www/cgi-bin/p

  2) To remove later

     /bin/rm -ir /var/www/cgi-bin/p
     /bin/rm -ir /var/www/html/a

  3) http://cert.fusiongrid.org/a/index.html
     Enter username to remove and click submit

  4) removeUser.py invoked
     Gets username from form
     Calculates locations of /var/www/User/*.info,
       /var/myproxy/*.data, and /var/myproxy/*.cred files
     Verifies files exist

   5) Gets Distinguished Name (DN) for *.info file
      Connects to roam.fusiongrid with remuser= argument
        User removed on roam.fusiongrid.org
      Removes info, data, and cred file for user