samedi 20 novembre 2010

Créer votre propre certificat avec Openssl

Voici un petit article vous permettant de créer vos propres certificats auto-signés avec Openssl. Ce certificat vous permettra de signer et d’encrypter vos mails (voir l’article suivant Signer vos mails à la maison, c’est possible)

Commençons par quelques précisions sur les formats des certificats:

  • .pem - (Privacy Enhanced Mail) contient un certificat dans le format Base64 encodé DER, entouré de "-----BEGIN CERTIFICATE-----" et "-----END CERTIFICATE-----"
  • .cer, .crt, .der – contient un certificat habituellement dans le format DER binaire
  • .p12 - PKCS#12, peut contenir des certificats publiques et les clefs privées associées, protégées par un mot de passe

Vous pouvez télécharger et installer Openssl pour Windows sur le site ci-dessous:

http://www.slproweb.com/products/Win32OpenSSL.html

Puis lancez une fenêtre de commande DOS et suivez la procédure ci-après.

Vous devez également télécharger le fichier de configuration pré-formaté Openssl que vous trouverez à l’URL suivante:

Télécharger le fichier de configuration d’Openssl !

Copiez ce fichier dans le répertoire “C:\Program Files\OpenSSL-Win32\bin”.

Puis, positionnez-vous dans le répertoire d’installation d’Openssl:

> cd "C:\Program Files\OpenSSL-Win32\bin"

Générez la paire de clefs (publique et privée) qui sera utilisée pour la création de votre certificat:

> openssl genrsa 1024 > %TEMP%\proxia.key

Générez votre certificat dans le format “cer”:

> openssl req -new -x509 -config openssl.conf -nodes -sha1 -days 365 -key %TEMP%\proxia.key > %TEMP%\proxia.cer

Convertissez votre certificat dans le format “pem”:

> openssl x509 -inform pem -outform pem -in %TEMP%\proxia.cer -out %TEMP%\proxia.pem

Transformez votre certificat dans le format “p12” pour y ajouter votre clef privée:

> openssl pkcs12 -export -out %TEMP%\proxia-mail.p12 -inkey %TEMP%\proxia.key -in %TEMP%\proxia.pem

C’est fait. Vous pouvez maintenant insérer votre certificat “proxia-mail.p12” dans votre carte à puce préférée (Gemalto .NET v2+) en utilisant l”outil en ligne Gemalto .NET Card Utilities.

Pour ceux qui veulent aller plus loin et générer un certificat permettant de faire du Smart Card Logon, vous trouverez ci-dessous les informations permettant de modifier le fichier “openssl.conf” (la procédure reste la même)

Dans la section [usr_cert] du fichier “openssl.conf”, modifier les lignes suivantes:

# For email protection
#extendedKeyUsage=critical,emailProtection
# For Smart Card Logon
LogonextendedKeyUsage=critical,1.3.6.1.4.1.311.20.2.2
 

7 commentaires:

  1. Bonjour,

    Je suis débutant en informatique (en fait, ce n'est pas mon métier). Votre didactitiel est très utile, mais je suis sous W7 et en tapant cette ligne de code:
    > openssl genrsa 1024 > %TEMP%\proxia.key

    J'ai ce message d'erreur qui apparaît et bloque la suite:
    "UNABLE TO WRITE 'RANDOM STATE' E IS 65537(0x10001)

    RépondreSupprimer
  2. Bonjour,
    Une piste à explorer!
    Essayez d'exécuter la commande ci-dessous avant d'effectuer vos opérations avec OpenSSL
    >set RANDFILE=.rnd
    Il semblerait que la variable RANDFILE ne soit pas initialisée sous Windows.
    Buz

    RépondreSupprimer
  3. bonjour j essaié la commande suivante
    openssl pkcs12 -in test.pfx -nocerts -out privateKey.pem -nodes
    il demande d'enté le mot de passe apres il plante un moment a l'netré du mot de passe error "can't read password"

    RépondreSupprimer
  4. Bonjour,

    votre article date mais il reste d'actualité et j'y suis arrivé en recherchant de l'info sur OpenSSL. Merci pour ces cas d'usage bien pragmatiques qui m'ont été fort utiles.

    Je voulais simplement commenter votre présentation des formats de codage PEM et DER possibles qui à mon avis peut prêter à confusion, notamment pour les personnes qui font l'amalgame entre formats de codage et extension de nom de certificat (CER, CRT, PEM, DER).

    Vous écrivez :
    .pem - (Privacy Enhanced Mail) contient un certificat dans le format Base64 encodé DER, entouré de "-----BEGIN CERTIFICATE-----" et "-----END CERTIFICATE-----"
    .cer, .crt, .der – contient un certificat habituellement dans le format DER binaire

    Pour l'extension PEM, j'aurais plutôt écrit : contient un certificat encodé DER (ASN.1) dans le format ASCII Base64 , entouré de "-----BEGIN CERTIFICATE-----" et "-----END CERTIFICATE-----".

    Pour l'extension DER, j'aurais plutôt écrit : contient un certificat habituellement encodé dans le format DER binaire natif ASN.1

    Car tous les certificats X509 sont encodés DER par définition même de la RFC et sont donc représentés par une suite binaire de codes hexadécimaux relatifs à la syntaxe ASN.1. Ils peuvent donc restés natifs ou être encodés une deuxième fois en code ASCII Base64 (variante MIME) pour permettre leur diffusion plus pratique, notamment via les systèmes de messagerie.

    Je crois utile de préciser que la pratique d'usage d'associer une extension de nom de certificat à l'encodage utilisé est à considérer avec prudence parce qu'elle n'est pas toujours respectée. En outre, l'extension CER est plutôt utilisée en environnement Unix/Linux et CERT est son pendant créé par Microsoft pour les environnements Windows. Ces deux types de certificats CER et CRT peuvent été encodés en DER binaire ou DER ASCII base64. Les exentsions DER et PEM sont moins équivoques.

    Qu'en pensez-vous ?

    Bien cordialement

    RépondreSupprimer
    Réponses
    1. Merci beaucoup pour ces précisions.
      Bien cordialement.

      Supprimer
  5. Bonjour,
    apres longue recherche, je trouve enfin les solutions concernant ces certificats
    merci pour ces tutos, je me remets dans le bain
    samuel

    RépondreSupprimer

Partager avec...