Bonjour à toutes et à tous,

Je travaille actuellement en collaboration sur un projet avec une entreprise spécialisée dans l'authentification sécurisée via smartcard.
Mon entreprise étant elle même dans le développement dans le développement de solutions de types sécu/VPN etc.. l'idée étant d'intégrer le tout.

Pour commencer, j'ai une smartcard avec un lecteur de carte et je décide d'implanter un certificat client dans cette dernière.
On va me demander un PIN qui si je ne me trompe pas va servir entre autre a chiffrer le certif. La clé privée étant stockée dans la carte et évidemment non exportable quoi qu'il arrive.

Dans notre solution VPN, il y a un mode d'authentification par certificat (en fichier statique .pem) et on se sert également de la clé privée (également en statique .pem). On utilise des fonctions openssl telles que "SSL_CTX_use_certificate_chain_file()" et "SSL_CTX_use_PrivateKey_file()" pour lire ces derniers.
Le problème qui s'impose du coup, est que je n'ai aucun moyen à priori d'exporter ma clé privée dans ma smartcard dans un fichier.
Du coup après beaucoup de recherches j'ai cru comprendre que je devais utiliser a la place de ces fonctions des fonctions type : "ENGINE_load_private_key" avec en engine "pkcs11". (déja pour commencer la notion d'engine n'est pas très très claire pour moi).
J'ai donc vu plusieurs exemples de configuration openssl (ex : http://openssl.6102.n7.nabble.com/Pr...e-td20720.html) avec pkcs11 (opensc, engine_pkcs11.so etc..) l'ennui c'est que ces configurations (si j'ai bien compris) concernent linux. En effet le projet consiste :

- une appli cliente windows WPF (écrite en C#) c'est l'interface graphique d'authentification sur le serveur, dans notre cas on choisit l'authentification type "certificat".
- une dll cliente windows (écrite en C compilée sur une machine virtuelle linux) qui contient toutes les fonctions d'authentification openssl/cryptage etc.. on fait appel a cette dll depuis notre appli C#.

Je sollicite donc votre aide afin d'avoir notamment des précisions et explications sur le système authentification smartcard/engine etc.. et comprendre pourquoi notamment lorsque je configure le fichier de configuration openssl.conf en lui ajoutant une engine "capi" comme ci dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
capi = capi_section

[capi_section]
engine_id = capi
dynamic_path = C:\OpenSSL-Win32\bin\capi.dll
init = 0
la fonction "engine_by_id("capi")" dans ma dll me retourne NULL. Est ce que l'engine en question (j'ai utilisé CAPI au final parce que d'après ce que j'ai lu c'était propre a windows et que engine_pkcs11.dll n'existe plus) doit être configurée sur la machine où la dll fut compilée (VM et dans ce cas la c'est une config linux) ou configurée sur le poste client utilisateur de la dll (et dans ce cas la c'est bien une config windows).
Voila j'ai essayé d'être le plus clair possible n'hésitez pas a me dire si c'est flou ou si d'avantage d'infos sont nécessaires.

Merci à tous d'avance