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
 

samedi 13 novembre 2010

Signer vos mails à la maison, c’est possible !

Imaginons un monde sans spam avec dans votre boîte aux lettres exclusivement des mails signés par des personnes de confiance. Je rêve, me direz-vous! Eh bien non, je crois que ce monde meilleur peut exister. Il ne dépend que de nous de donner l’exemple. Cet article va vous montrer comment signer simplement vos mails sans grandes connaissances de la fameuse et effrayante ”Public Key Infrastructure”. Les plus avertis d’entre vous aurons même la possibilité de les encrypter!

Personnellement je trouve que les outils dont nous disposons aujourd'hui sont suffisamment matures pour nous permettre de les utiliser dans un cadre personnel.
C'est le cas de la signature et de l'encryption de mail. J'utilise Windows Live Mail et la configuration est plutôt simple pour permettre de signer nos mails et même de les encrypter (on dit aussi chiffrer).

A ce stade un petit rappel, très haut niveau, s'impose:

  • Pour générer un certificat, deux clefs sont nécessaires, la clef publique et la clef privée. La clef publique est incluse dans le certificat et peut être connue de tout le mode. La clef privée est, au contraire, à protéger (c’est elle qui permet de prouver votre identité)
  • Signer un mail permet à celui qui va recevoir le mail d'être certain que c'est bien vous l'émetteur du mail et non un méchant pirate ou spammeur (vous utilisez votre clef privée pour signer votre mail; la personne qui a reçu votre mail utilise la clef publique contenue dans votre certificat pour vérifier votre signature)
  • Encrypter un mail c'est permettre à la personne à qui vous envoyer le mail d'être la seule à pouvoir lire le message que vous lui envoyez (c’est la clef publique de la personne à qui vous envoyez le mail que vous utilisez pour le chiffrement; seul le possesseur de la clef privée, i.e. la personne à qui vous avez envoyé le mail, peut déchiffrer le mail).
  • Toutes ces vérifications sont transparentes pour vous

Autant la signature peut être utilisée de manière systématique, cela est moins vrai pour l'encryption pour au moins deux raisons:

  • pour encrypter un mail vous avez besoin de la clef publique contenue dans le certificat de la personne à qui vous voulez envoyer le mail. Le récepteur doit donc posséder un certificat (on parle aussi d'identité numérique) et vous devez avoir accès à ce certificat.
  • pour lire demain les mails qui vous ont été envoyés “encryptés” hier, vous aurez besoin de la paire de clefs correspondante (or nos certificats ont une durée de vie limitée dans le temps). Il est donc nécessaire de prendre cette contrainte en compte.

En ce qui concerne ce deuxième point, Windows Live Mail dispose d'une option permettant de stocker automatiquement l'identité numérique de vos correspondants (s’ils existent dans vos contacts)

Mais avant toutes choses, vous devez posséder un certificat permettant l'encryption et la signature de mail. Pour cela plusieurs solutions s'offrent à vous:

  • générer votre propre certificat avec Openssl (ce point fera l'objet d'un prochain article)
  • acheter un certificat chez Verisign et consorts. Oui mais c’est cher…!
  • récupérer un certificat gratuit chez Comodo

Dans mon cas j'ai récupéré un certificat chez Comodo à l'URL suivante:
http://www.comodo.com/home/email-security/free-email-certificate.php
Vous devez cliquer sur "Free Download" et suivre la procédure. Vous allez alors recevoir plusieurs mails de Comodo, dont un qui installera automatiquement le certificat dans le magasin des certificats d'Internet Explorer (les tests ont été faits avec Internet Explorer 8.0 mais l'utilisation de Firefox est aussi possible).

Vous pouvez si vous le souhaitez (cette manipulation est optionnelle) stocker votre certificat dans une carte à puce (c'est ce que j'ai fait).

Pour cela voilà les étapes à suivre:

  • ouvrir votre magasin de certificats d'Internet Explorer
  • sélectionner le certificat et l'exporter en incluant la clef privée dans un fichier protégé par un mot de passe
  • importer le certificat dans votre carte à puce

Pour cette dernière étape, si votre carte à puce est une carte .NET v2 ou v2 plus de Gemalto (avec la clef mère d'origine), vous pouvez utiliser le service Gemalto disponible à l'URL Gemalto .NET Card Utilities
Vous devez alors installer l'ActiveX SConnect qui permet l'accès à votre carte, puis sélectionner "Certificate Management", et suivre le process.

Maintenant vous disposez d'un certificat soit dans une carte à puce, soit dans le magasin des certificats d'Internet Explorer.

Pour configurer Windows Live Mail pour signer vos mails, sélectionnez "Outils / Options de sécurité" et choisissez l’onglet “Sécurité”.

Dans la zone “Courrier sécurisé”, activez l’option “Signer numériquement tous les messages sortants” pour permettre de signer automatiquement vos mails

ScreenShot053

Dans la zone “Courrier sécurisé”, cliquez sur “ID numériques…” pour vérifier que votre certificat de protection de mail est bien présent

ScreenShot054

Dans la zone “Courrier sécurisé”, cliquez sur “Avancé…” pour vérifier que:

  • l’option “Inclure l’ID numérique lors de l’envoi de messages signés” est activée (cette option vous permet d’inclure automatiquement votre certificat dans le mail envoyé pour permettre la vérification de votre signature)
  • l’option “Ajouter le certificat des expéditeurs à mes contacts Windows Live” est activée (cette option vous permet de stocker le certificat des personnes à qui vous souhaitez envoyer un mail encrypté / chiffré)

ScreenShot055

Si vous avez stocké votre certificat dans une carte à puce, alors, avant l’envoi du mail signé, votre PIN code vous est demandé (afin d’autoriser l’accès à votre clef privée pour effectuer la signature)

ScreenShot057

Si vous souhaitez chiffrer / encrypter un mail, créez votre mail et dans "Outils" cochez l’option "Chiffrer" (pour cela vous devez disposer de l'identité numérique du destinataire)

ScreenShot056

Vous remarquez que l’option “Signer” est activée par défaut suite à notre configuration.

Partager avec...