Signer ses propres certificats SSL

Comme pour beaucoup d’installations devant fonctionner en mode sécurisé, Beehive a besoin d’un certificat SSL. Le certificat SSL  fournit par Oracle est un certificat de tests non compatible avec OBEE, OBEO et Webconference qui refusent la connexion car le certificat n’est pas signé par une autorité de confiance.
Il faut ou bien acheter des certificats SSL sur le marché (solution généralement adoptée pour une production large) ou alors être sa propre autorité de certification, ce qui peut tout à fait convenir dans un contexte Intranet. Le tutoriel ci-dessous est basé sur l’exemple d’une installation Beehive mais est applicable pour tout serveur devant pouvoir fonctionner en SSL

Génération d’une clé privée:

On commence par générer une clé privée à 2048 bits dans un fichier nommé rootca.key; cette clé privée et son mot de passe doivent être soigneusement conservés car ils représentent la partie confidentielle du futur certificat racine. Le mot de passe qui sera fourni doit donc être fort car c’est celui de la racine de tous nos certificats, on évitera welcome1!

openssl genrsa -out rootca.key -des3 2048
Generating RSA private key, 2048 bit long modulus
.......................+++
..................................................................................+++
e is 65537 (0x10001)
Enter pass phrase for rootca.key:
Verifying - Enter pass phrase for rootca.key:

Création du fichier rootca.key contenant la clé privée.

Génération du certificat racine:

On génère un certificat racine valable 10 ans (la valeur par défaut étant un mois, tout certificat serveur signé ainsi serait invalide au bout d’un mois…)

openssl req -new -x509 -key rootca.key -out rootcertif.crt -days 3650
Enter pass phrase for rootca.key:

Là on fournit le super mot de passe de la clé privé qu’on a créé au dessus, puis l’on va saisir des informations de notre société qui se prend pour une autorité de certification.  Une valeur par défaut est suggérée entre crochets [], si vous préférez ne rien mettre, saisissez un point ‘.’

-----
Country Name (2 letter code) [GB]:FR
State or Province Name (full name) [Berkshire]:Midi-Pyrénées
Locality Name (eg, city) [Newbury]:Toulouse
Organization Name (eg, company) [My Company Ltd]: Easyteam
Organizational Unit Name (eg, section) []:Direction
Common Name (eg, your name or your server's hostname) []:Certificat Racine Easyteam

Va créer le certificat rootcertif.crt qui sera utilisé pour signer les demandes de certifications émanant des serveurs à sécuriser. Comme ces 2 fichiers (rootca.key & rootcertif.crt) vont servir à signer tous les certificats de l’entreprise, on les archive de suite sur CD-ROM en notant le mot de passe de la clé privée.

Signer ses demandes de certificats

Créer les demandes avec Oracle Wallet Manager (OWM)

  • Lancer OWM, ou bien sur le serveur ou sur un poste Windows doté de OWM
  • Portefeuille (wallet) > Nouveau
  • A la question d’un répertoire wallet par défaut n’existe pas, choisir Oui pour le créer
    • J’ai choisi D:oraclewallet
    • Fournir (2 fois) le mot de passe du portefeuille qui sera présent sur chaque serveur Beehive
    • Laisser le type standard (pas PKCS11)
  • Dire ‘Oui’ pour créer une demande de certificat
  • Remplir le formulaire
  • La demande de certificat est visible en cliquant sur ‘Certificat demandé’
  • Enregistrer le portefeuille
    • Valider la création du dossier dans D:oraclewallet
  • Activer l’autologin: Menu Portefeuille > Connexion automatique
  • Exporter la demande de certificat
    • Dans le wallet, je nomme le fichier beetest.csr pour ‘Certificate Signing Request’
  • Enregistrer et fermer
  • Le dossier D:oraclewallet contient 3 fichiers:
    • ewallet.p12: le véritable portefeuille qui sera déployé ultérieurement
    • cwallet.sso:  la ‘version’ auto-login de ce portefeuille
    • beetest.csr: la demande de certificat qui sera bientôt envoyé à la machine possédant le certificat racine pour être signé.

Signer la demande de certificat

  • Copier le fichier beetest.csr sur une machine Linux
  • Insérer le CD contenant le certificat racine
  • Exécuter la commande ci-dessous pour signer la demande en générant le fichier beetest.crt (vous pouvez mettre la commande sur une seule ligne en enlevant les  » à chaque fin de ligne)
    • Il faudra fournir le mot de passe du certificat racine
    • Le certificat ainsi créé sera valide 700 jours
openssl x509 -req -in beetest.csr -CA /media/cdrom/rootcertif.crt
-CAkey /media/cdrom/rootca.key -CAcreateserial -days 700 > beetest.crt
  • Recopier les fichiers rootcertif.crt et beetest.crt dans le dossier wallet à coté de la demande de signature: beetest.csr

Intégrer le certificat dans le portefeuille

  • Relancer OWM
  • Ouvrir le portefeuille dans D:oraclewallet en fournissant son mot de passe
  • Importer le certificat racine dans le portefeuille
    • Opérations > Importer un certificat sécurisé
    • Sélectionner un fichier contenant le certificat
    • Sélectionner le fichier rootcertif.crt, il apparait dans la liste des Certificats sécurisés (les autorités)
  • Importer le certificat signé, qui sera associé avec la demande
    • Opérations > importer un certificat utilisateur
    • Sélectionner un fichier contenant le certificat
    • Sélectionner le fichier beetest.crt, il est affiché comme [Prêt]
  • Enregistrer et fermer OWM
  • Dans D:oraclewallet, la taille des fichiers cwallet.sso et ewallet.p12 a augmenté suite à l’import du certificat racine et du certificat signé.

Déployer le portefeuille sur les serveurs Beehive

Le portefeuille contenant les certificats a été généré sur mon poste, il va maintenant falloir le déployer sur les serveurs d’applications Beehive LAN et DMZ et faire pointer les différents fichiers de configuration dessus. Sur chaque serveur, répéter les opérations suivantes:

  • Copier les fichier cwallet.sso et ewallet.p12 dans un dossier $ORACLE_HOME/wallet
  • Configurer les différents services pour utiliser le certificat dans le nouvel emplacement (beectl, ssl.conf, opmn.xml)
  • Supprimer les wallets par défaut dans
    • $ORACLE_HOME/Apache/Apache/conf/ssl.wlt/default
    • $ORACLE_HOME/opmn/conf/ssl.wlt/default

Déployer le certificat racine

Pour que les différents client acceptent le certificat présenté par les serveurs Beehive, il doit avoir été signé par une autorité racine dont le certificat est déjà dans le portefeuille local du client (IE ou Firefox). Il va falloir importer le rootcertif.crt sur chaque client, au minimum dans Internet Explorer et également dans Firefox et Thunderbird si ceux ci sont utilisés:

  • Rendre le fichier rootcertif.crt accessible sur l’intranet de l’entreprise
  • Télécharger le fichier sur son poste
  • Internet Explorer
    • Click droit sur le raccourci IE sur le bureau > Propriétés
    • Onglet ‘Contenu’, bouton ‘Certificats’, ‘Autorités principales de confiance’
    • Bouton ‘Importer’, ‘Suivant’, Parcourir vers le fichier rootcertif.crt, ‘Suivant’
    • Placer dans le magasin ‘Autorités de certification racines de confiance’
    • ‘Suivant’, ‘Terminer’, valider l’avertissement de sécurité et fermer
  • Firefox
    • Outils > Options > Avancé > Chiffrement > Afficher les certificats
    • Onglet ‘Autorités’, bouton ‘Importer’
    • Sélectionner le fichier rootcertif.crt
    • Cocher la première case « Autoriser pour identifier les sites »
    • Fermer

Cette manipulation est également possible sur des iPhone, Blackberry, Nokia ou autre PDA communiquant – Smartphone, mais là dans un autre post ;o)

2 réflexions sur “Signer ses propres certificats SSL”

  1. Ping : Signer ses propres certificats SSL « EASYTEAM LE BLOG « Oracle jgaicc

  2. Ping : Astuces pour installer Grid Control 11g « EASYTEAM LE BLOG

Les commentaires sont fermés.