Note: This document assumes access to the AMIT definitive software library Private area. If you do not have access to this AFS locker, then you will be able to create SSL certs with these instructions, but not store them in the AMIT library.

Note: RadminD should create the SSL directories and install the CA on the host to be configured.

  1. There are now 2 ways of doing this. The old, by hand method, and the new pexpect script.
    1. To use the pexpect script to setup certs, first check that openssl, python, and pexpect are installed.
      openssl version
      python
      import pexcept
      [ctrl-D]
      
    2. If those works, and the reported versions of OpenSSL is above 0.9.8, and Python is above 2.2, you can continue with this method.
      • If pexpect is not installed, it is available in the AMIT DSL, or from the authors website.
      • Generally, it is better to run this script from a local system, and use scp to put the certs into place.
    3. Install the ssl-certgen.py script, if not done already.
      scp dracus@athena.dialup.mit.edu:/afs/athena.mit.edu/project/amit-dsl/Public/common-init/ssl-certgen.py /usr/local/bin
      
    4. Running it as is will create cert requests for the local hostname, and store everything in '/var/lib/ssl'. Use '-cname' to set the hostname in the cert, 'certdir' to set the directory that cert requests are stored into, and 'privdir' to set the directory that private keys go into. For help, use '-help'.
      /usr/local/bin/ssl-certgen.py --help
      /usr/local/bin/ssl-certgen.py --cname [some hostname] --certdir /home/dracus/tmp/certs --privdir /home/dracus/tmp/private
      
    5. This will generate a private key, a self-signed temporary cert, and a cert request, and email the cert requset to 'mitcert@mit.edu'.
    6. Create symbolic links to the key and temporary cert to get Apache to work with the standard config.
      ln -s /var/lib/ssl/certs/`hostname`-temp-cert.pem /var/lib/ssl/certs/host-cert.pem
      ln -s /var/lib/ssl/private/`hostname`-key.pem /var/lib/ssl/private/host-key.pem
      
  2. The old, by hand method also works.
    1. Check that the SSL directories are there, and cd to them.
      ls -l /var/lib/ssl
      cd /var/lib/ssl
      
      • If there are not there, create them.
        mkdir /var/lib/ssl
        mkdir /var/lib/ssl/certs
        mkdir /var/lib/ssl/private
        cd /var/lib/ssl
        
    2. Generate rsa key
      • This simply generates some random stuff:
        ps > /tmp/foo
        ps -elf >> /tmp/foo
        cd /var/lib/ssl
        openssl genrsa -rand /tmp/foo 1024 > /var/lib/ssl/private/`hostname`-key.pem
        
    3. Generate request for a certificate
      cd /var/lib/ssl/
      openssl req -key /var/lib/ssl/private/`hostname`-key.pem -new \
         > /var/lib/ssl/certs/`hostname`-req.pem
      
      • Input the requested information.
        Please be aware, the organization (O) is:
        Massachusetts Institute of Technology
        and the common name (CN) is the name of the server or
        service, including the domain name (.mit.edu).  Also, some servers, such
        as Thalia servers, can represent an entire subdomain.  These servers
        will need certificates issued with a wildcard in the domain name, such
        as *.isda-thalia-1.mit.edu.
        
        Remember, if the server is a Thalia server, it will need a wildcard
        certificate and DNS record for *.`hostname`, and if it is doing any type of
        authentication, it will need a joint client/server certificate to be able
        to connect to the Shibboleth server (and have end users connect to it as
        well).
        
    4. Send the cert request file to mitcert@mit.edu
      cat `hostname`-req.pem | mail -s "Cert request for rolesapp-test.mit.edu" -c map-support@mit.edu mitcert@mit.edu
      
    5. To generate a self signed temporary certificate, add the x509 and nodes options to the openssl command line.
      cd /var/lib/ssl
      openssl req -key /var/lib/ssl/private/`hostname`-key.pem -new -x509 -nodes > /var/lib/ssl/certs/`hostname`-temp-cert.pem
      
    6. When you receive a certificate from MIT Certificates, save it as:
      /var/lib/ssl/certs/`hostname`-cert.pem
      
    7. Create the symlinks that will allow Apache to function correctly.
      ln -s /var/lib/ssl/certs/`hostname`-cert.pem /var/lib/ssl/certs/host-cert.pem
      ln -s /var/lib/ssl/private/`hostname`-key.pem /var/lib/ssl/private/host-key.pem
      
      • You can use the self signed cert while waiting for the official one by symlinking it.
        ln -s /var/lib/ssl/certs/`hostname`-temp-cert.pem /var/lib/ssl/certs/host-cert.pem
        
  3. Commands to view cert information:
    • to look at a request:
      openssl req -in /afs/athena.mit.edu/project/amit-dsl/Private/ssl-certs/${hostname}
      /host-req.pem \-text
      
    • to look at the private key:
      openssl rsa -in /afs/athena.mit.edu/project/amit-dsl/Private/ssl-certs/${hostname}/host-key.pem -text
      
    • to look at the server certificate:
      openssl x509 -in /afs/athena.mit.edu/project/amit-dsl/Private/ssl-certs/${hostname}/host-cert.pem -text
      
  • No labels