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.
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.
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"
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
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.