Certificat SSL

Lors de l'installation d'un serveur de développement HTTPS, la question du certificat SSL se pose toujours. La solution habituelle est d'acheter un certificat auprès d'une autorité de certification officielle, puisque leurs certificats racines sont déjà enregistrés dans les navigateurs courants.

Il est possible d'éviter cette dépense inutile en devenant sa propre autorité de certification privée. La procédure suivante décrit les étapes à suivre pour configurer BEA Weblogic avec un certificat auto-signé.

Création d'un certificat SSL pour Weblogic

La procédure est basée sur le paquet openssl de cygwin. Elle doit pouvoir être adaptée à d'autres librairies SSL.

Création de la clé de l'autorité de certification

Dans un répertoire vide, créer un sous-répertoire private et générer la clé privée de l'autorité de certification (ces commandes doivent être lancées sous bash:

mkdir private
openssl genrsa -des3 –out private/ca.key 1024

Cela permet de créer un fichier de signature triple DES avec une clé de longueur 1024. Il faut réduire cette taille à 512 pour les anciennes versions des logiciels importés des Etats-Unis. Entrer une pass phrase de votre choix.

Auto Certification

Créer le certificat auto signé, entrez les informations demandées (pays, entreprise, nom, email) :

mkdir certs
openssl req –new –x509 –days 365 –keyout private/ca.key –out certs/ca.crt

Cette commande permet de créer le certificat X509 ca.crt qui expire dans 1 an.

Configuration navigateur

Le certificat racine doit être enregistré dans le navigateur client pour permettre un accès au serveur sans déclencher une alerte. Les navigateurs acceptent les certificats sous forme d'un fichier PKCS12 généré par la commande suivante :

openssl pkcs12 –export –in certs/ca.crt –out ca.p12 –inkey private/ca.key -certfile certs/ca.crt -name "maCA"

Création de la clé du serveur

L'étape suivante consiste à créer la clé RSA du serveur :

openssl genrsa -out monserveur.key

Remplacer monserveur par le nom du serveur.

Générer la demande de certification

La clé du serveur doit être certifiée par l'autorité de certification. Il faut donc créer une demande de certification.

openssl req –days 365 –new –key monserveur.key > monserveur.csr

Fournir les informations associées à la demande, qui sont normalement vérifiées par les autorités de certification officielles. Utiliser le nom DNS complet du serveur pour le champ Name.

Signer la demande de certification

C'est l'étape la plus complexe, qui consiste à créer le certificat correspondant à la demande. Le script suivant permet de masquer les détails de configuration :

#!/bin/sh
##
##  sign.sh -- Sign a SSL Certificate Request (CSR)
##  Copyright (c) 1998-1999 Ralf S. Engelschall, All Rights Reserved. 
##

#   argument line handling
CSR=$1
if [ $# -ne 1 ]; then
echo "Usage: sign.sign <whatever>.csr"; exit 1
fi
if [ ! -f $CSR ]; then
echo "CSR not found: $CSR"; exit 1
fi
case $CSR in
*.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;;
* ) CERT="$CSR.crt" ;;
esac

#   make sure environment exists
if [ ! -d ca.db.certs ]; then
mkdir ca.db.certs
fi
if [ ! -f ca.db.serial ]; then
echo '01' >ca.db.serial
fi
if [ ! -f ca.db.index ]; then
cp /dev/null ca.db.index
fi

#   create an own SSLeay config
cat >ca.config <<EOT
[ ca ]
default_ca	= CA_own
[ CA_own ]
dir	= .
certs	= ./certs
new_certs_dir	= ./ca.db.certs
database	= ./ca.db.index
serial	= ./ca.db.serial
RANDFILE	= ./ca.db.rand
certificate	= ./certs/ca.crt
private_key	= ./private/ca.key
default_days	= 365
default_crl_days	= 30
default_md	= md5
preserve	= no
policy	= policy_anything
[ policy_anything ]
countryName	= optional
stateOrProvinceName	= optional
localityName	= optional
organizationName	= optional
organizationalUnitName	= optional
commonName	= supplied
emailAddress	= optional
EOT

#  sign the certificate
echo "CA signing: $CSR -> $CERT:"
openssl ca -config ca.config -out $CERT -infiles $CSR
echo "CA verifying: $CERT <-> CA cert"
openssl verify -CAfile ./certs/ca.crt $CERT

#  cleanup after SSLeay 
rm -f ca.config
rm -f ca.db.serial.old
rm -f ca.db.index.old

#  die gracefully
exit 0

Son utilisation est simple :

./sign.sh monserveur.csr

Configuration de Weblogic

Pour pouvoir installer les certificats créés, il faut adapter les noms de fichiers :

cp certs/ca.crt ca.pem
cp monserveur.key demokey.pem
cp monserveur.crt democert.pem

Ces trois fichiers .pem peuvent être installés directement en remplacement des certificats livrés avec Weblogic. Il est évidemment aussi possible de changer les noms de fichiers en modifiant la configuration serveur en conséquence.