Envoyer des mails signés avec Mac OS X et une Smart Card

Aujourd’hui, un truc un peu plus technique que d’habitude : une méthode pour envoyer des mails chiffrés avec une Smart Card.

J’ai en effet acheté une Smart Card récemment (ça vaut environ 13 €) et j’ai commencé à jouer avec cette dernière. Mac OS X supporte assez bien ce genre de périphérique si on a un bon lecteur, j’utilise un SCM 3500 de chez SMC.

Si la carte permet beaucoup de choses, je vais ici simplement m’attaquer à un truc simple, signer un mail avec la Smart Card.

On considère que vous avez une carte vide, et il y a quelques commandes à taper. Ici, on va générer les certificats en local, donc il va être possible de déchiffrer les données même si on a plus la carte. Il est aussi possible de générer les clés via la carte elle-même, mais si la carte ne fonctionne plus, on perd les données chiffrées… Les instructions proviennent de ce site, qui vend les cartes.

Avant de taper de la ligne de commande il faut installer (sous Lion), les Smart Card Services. Sous Leopard et Snow Leopard, les fichiers sont déjà présents. Il faut aussi installer OpenSC pour « discuter » avec la carte. En téléchargement ici pour Lion.

Première chose, vider la carte.

pkcs15-init -E

Ensuite, on va formater la carte. Après PIN, il faut entrer le code voulu. Après label, le nom de la carte.

pkcs15-init --create-pkcs15 --profile pkcs15+onepin --use-default-transport-key --pin 0000 --puk 111111 --label "Nabaztagtag"

On va maintenant générer un certificat RSA avec openssl.

openssl genrsa 2048 > key.pem

Et copier le tout sur la carte. Entrez bien votre PIN.

pkcs15-init --store-private-key key.pem --auth-id 01 --pin 0000

Ensuite, on lance OpenSSL et on tape la commande.

openssl
engine dynamic -pre SO_PATH:/Library/OpenSC/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:opensc-pkcs11.so

On ne ferme pas OpenSSL, on ouvre un second onglet dans le Terminal et on tape la commande suivante.

pkcs11-tool --list-slots --module opensc-pkcs11.so

Une fois que c’est fait, la commande suivante va permettre de récupérer la clé. C’est le id à la fin.

pkcs15-tool --list-keys

On retourne dans OpenSSL et on adapte la commande. Si vous utilisez un autre slot que le 1, il faut le changer (peu de chance), et ensuite entrer la clé à la place de celle présente. Normalement, OpenSSL va vous demander des informations à placer dans la carte. C’est important de bien noter les informations, spécialement l’adresse mail, qui doit être celle que vous allez utiliser.

req -engine pkcs11 -new -key slot_1-id_0000000000000000000000000000000000000000 -keyform engine -x509 -out cert.pem -text

On retourne dans le second onglet et on tape la dernière commande.

pkcs15-init --store-certificate cert.pem --auth-id 01 --id 0000000000000000000000000000000000000000 --format pem

Normalement, la carte est maintenant visible dans le Trousseau d’accès. On peut la déverrouiller en cliquant sur le cadenas en haut de la fenêtre.

Il faut aller vérifier dans le certificat que l’adresse mail est la bonne et indiquer à Mac OS X qu’on peut se fier au certificat en question.

Une fois que c’est bon, signer un mail est l’enfance de l’art : il suffit de créer un mail avec l’adresse indiquée dans le certificat…

Je vais essayer de voir ce qu’il est possible de faire avec la carte, genre gérer FileVault, remplacer le mot de passe de login, etc.