jeudi 19 janvier 2012

Créer un certificat numérique SSL auto-signé

Testé sous Windows 7 Ultimate 64bits

Acheter un certificat numérique peut s'avérer très onéreux. Pour les développeurs n'ayant pas la possibilité ou l'envie de dépenser de l'argent pour certifier une application, il leur est possible de créer leur propre certificat numérique auto-signé.

Si vous voulez acheter un certificat, vous pouvez vous renseigner chez Thawte (http://www.thawte.fr) ou chez Verisign (http://www.verisign.fr)

Pour ce faire il suffit de télécharger l'outil OpenSSL disponible sur le site suivant :
http://www.slproweb.com/products/Win32OpenSSL.html
Vous y trouverez une version 32bit et une version 64 bits. Vous l'installez et vous pouvez commencer à créer votre propre certificat

Ci-dessous vous trouverez la méthode de création du certificat. Les 3 étapes décrites sont nécessaires. Dans le cas de l'exemple les fichiers créés commencent par Test. Il sera donc créés 6 fichiers :
- TestCA.key
- TestCA.crt
- TestICA.key
- TestICA.csr
- TestICA.crt
- Test.pfx

Vous devrez donc remplacer ces noms et les autres informations demandées par ce qui vous convient.

1. Créer un certificat CA

Le certificat CA est le certificat à installer dans "autorités de certification racines de confiance"

Ouvrez une prompt DOS (Démarrer -> Exécuter -> cmd -> OK)
Rendez-vous dans le répertoire BIN d'OpenSSL.
Tapez OpenSSL + [ENTER]
Créez la clé privée à l'aide de la commande :
genrsa -des3 -out TestCA.key 1024
Tapez le mot de passe demandé (2 fois). Dans l'exemple : testpass.
Créez la clé publique à l'aide de la commande :
req -new -x509 -days 365 -key TestCA.key -out TestCA.crt
365 désigne le nombre de jours de validité du certificat, vous pouvez bien sûr modifier ce paramètre.
Indiquez le mot de passe.
Indiquez les informations relatives à votre société.
- Country Name (ISO du pays)
- State or Province Name (Département ou province)
- Locality Name (Ville)
- Organization Name (Nom complet de votre société)
- Organization Unit Name (Nom de votre département)
- Common Name (Votre domaine)
- Email Adress (Adresse email)


2. Créer et signer un certificat ICA


Le certificat ICA est le certificat à installer dans "autorités de certification intermédiaires"

Toujours dans la prompt DOS.
Créez la clé privée à l'aide de la ligne de commande :
genrsa -des3 -out TestICA.key 1024
Tapez le mot de passe demandé (2 fois). Dans l'exemple : testpass.
Créez la demande de certificat pour signature par l'autorité racine CA à l'aide de la commande :
req -new -key TestICA.key -out TestICA.csr
Indiquez le mot de passe.
Indiquez les informations relatives à votre société.
Ensuite le système vous demande d'indiquez un "challenge password" et un "optional company name". Dans les deux cas, laissez blanc.
Signez la demande avec la racine CA et fabriquer une clé publique à l'aide de la commande :
x509 -req -days 365 -in TestICA.csr -CA TestCA.crt -CAkey TestCA.key -set_serial 01 -out TestICA.crt
Indiquez le mot de passe.


3. Créer le certificat personnel combiné (.pfx)


Le certificat .pfx est le certificat à installer dans "Personnel"

Créez le certificat combiné à l'aide de la commande :
pkcs12 -export -out Test.pfx -inkey TestICA.key -in TestICA.crt
Indiquez le mot de passe (3 fois).



Les fichiers générés se trouvent dans le répertoire "bin" d'OpenSSL.


7 commentaires:

  1. Bonjour, tout d'abord merci pour cet article, j'aurais tout de même une petite question, quelle est la valeur légale de ce type de certificat?

    RépondreSupprimer
    Réponses
    1. A mon humble avis, aucune !

      Ce type de certificat convient pour une utilisation interne. Pour les applications développées par une entreprise à destination de cette même entreprise.
      Dans le cas expliqué dans cette article vous prenez vous-même le rôle d'autorité de certification.

      Il est toujours bien sûr possible de demander la création d'un certificat à une autorité de certification reconnue mais ça coûte cher...

      Cette réponse est à prendre avec des pincettes n'étant moi-même pas juriste.

      Supprimer
  2. Bonjour Gille,
    Merci pour cet article. J'ai suivi ton explication. Mais je rencontre une difficulté dans la génération des fichiers:
    -- quand je lance Open SSL, le console affiche:
    "WARNING: can't open config file: /usr/local/ssl/openssl.cnf";

    -- quand je veux générer le fichier, le console affiche:
    "unable to load config info from /usr/local/ssl/openssl.cnf"

    Ceci est compréhensible, le fichier n'etant pas accessible.
    Peux-tu m'aider.
    Merci.

    RépondreSupprimer
    Réponses
    1. Bonjour kossi doji,

      Je n'ai jamais eut ce problème mais après une petite recherche sur Google, voici peut-être une solution à ton problème.

      Le message « WARNING: can’t open config file: /usr/local/ssl/openssl.cnf » apparait fréquemment après l’installation de OpenSSL sur Windows.

      En fait le problème vient du fait que la configuration par défaut d’OpenSSL essaye de charger le fichier openssl.cnf à partir d’un chemin erroné.

      Pour résoudre ce problème, cliquez sur le bouton « Démarrer » puis dans « Exécuter… » tapez « cmd« .

      La fenetre de l’invite de commandes DOS apparait saisissez maintenant la commande « set OPENSSL_CONF=[DOSSIER D’INSTALLATION]binopenssl.cfg » et validez.

      Voila maintenant le message ne devrait plus apparaitre.


      Citation venant de nicoss01 sur le site : http://www.erreurs404.net/blog2/openssl-warning-cant-open-config-file-usrlocalsslopensslcnf.html

      Supprimer
  3. Bonjour,
    j'ai installé openssl 32 bits windows version 1.1.0
    J'ai suivi vos instructions, tout se passe bien jusqu'à l'étape 2 où je rencontre un probleme à l'execution de la commande "req -new -key TestICA.key -out TestICA.csr"

    Le message d'erreur :

    OpenSSL> req -new -key krinasoftICA.key -out krinasoftICA.csr
    problem creating object tsa_policy1=1.2.3.4.1
    4852:error:08064066:object identifier routines:OBJ_create:oid exists:crypto\objects\obj_dat.c:689:
    error in req

    Pouvez-vous m'aider svp ? je ne trouve rien sur google...

    RépondreSupprimer
    Réponses
    1. je me répond à moimeme :
      dans le openssl.cfg, il faut mettre en commentaire les lignes tsa_policy =...

      Supprimer