Le but de la manip est de générer des certificats autosignés par script (incluant un CSR).
La manip standard se décompose en 3 étapes :
  1. Génération de la clé privée
  2. Génération du CSR avec la clé privée
  3. Le CSR peut aussi être utilisé pour acheter un certificat chez un fournisseur.
  4. Génération du certificat
On commence le script par les variables :
CERTDIR=/etc/apache/cert
CERTDOMAIN=mydomain.com
CERT_CONFIG_FILE=/tmp/certconfig

  1. clé privée
  2. openssl genrsa -out $CERTDIR/CERTDOMAIN.key 2048
    chmod 400 $CERTDIR/CERTDOMAIN.key
    
    2048 est le nombre de bits.
  3. CSR
  4. Pour générer le CSR il faut remplir un certain nombre de champs en interactif. Pour contourner l'interactivité il faut créer un fichier de propriété qui sera passé en paramètre de la demande du CSR.
    cat << fin > $CERT_CONFIG_FILE
    [ req ]
    default_bits = 2048
    encrypt_key = yes
    distinguished_name = req_distinguished_name
    prompt = no
    
    [ req_distinguished_name ]
    C=FR
    ST=France
    L=Paris
    O=MA SUPER BOITE
    OU=WEB DIVISION
    CN=$CERTDOMAIN
    emailAddress=root@localhost
    fin
    
    Puis générer le csr :
    openssl req -verbose  -config $CERT_CONFIG_FILE  -new -key $CERTDIR/$CERTDOMAIN.key -out $CERTDIR/$CERTDOMAIN.csr
    
  5. CERT
  6. Enfin le certificat :
    openssl x509  -days 9999 -req -in $CERTDIR/$CERTDOMAIN.csr  -signkey $CERTDIR/$CERTDOMAIN.key -out $CERTDIR/$CERTDOMAIN.cert
    

Pour utiliser ca dans apache il suffit de faire un vhost en SSL :
cat << fin >> /etc/httpd/vhosts.d/$CERTDOMAIN.conf
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile $CERTDIR/$CERTDOMAIN.cert
SSLCertificateKeyFile $CERTDIR/CERTDOMAIN.key
fin