...
| Remarque |
|---|
En général les supports cartographiques (token) se présentent sous la forme d'un lecteur de carte a puce USB (une clé) accompagné d'une carte SIM. Il faut donc qu'OpenSC supporte à la fois le lecteur et à la fois la carte SIM. La liste des matériels supportés nativement par les drivers libres intégrés est donnée ici : https://github.com/OpenSC/OpenSC/wiki/Supported-hardware-%28smart-cards-and-USB-tokens%29 Notez que si les drivers libres embarquées par OpenSC ne peuvent pas être utilisées, il est aussi possible d'utiliser opensc avec les drivers propriétaires. Le déploiement et configuration, notamment des postes clients, seront alors cependant un peu plus compliqués. |
| Sommaire |
|---|
Sources
https://github.com/OpenSC/OpenSC
...
| Avertissement |
|---|
Ce point est plus problématique. OpenSC permet une abstraction matérielle mais la compatibilité est limitée nativement. |
Pour obtenir la liste des drivers supportés :
| Bloc de code | ||
|---|---|---|
| ||
opensc-tool -D |
En version 0.23.0 on obtient :
plusieurs choix s'offrent alors à l'exploitant :
|
Pour obtenir la liste des drivers supportés nativement :
| Bloc de code | ||
|---|---|---|
| ||
opensc-tool -D |
En version 0.23.0 on obtient :
| Bloc de code | ||
|---|---|---|
| ||
| Bloc de code | ||
| ||
Available card drivers: cardos Siemens CardOS cyberflex Schlumberger Cyberflex gemsafeV1 Gemalto GemSafe V1 applet starcos STARCOS tcos TCOS 3.0 oberthur Oberthur AuthentIC.v2/CosmopolIC.v4 authentic Oberthur AuthentIC v3.1 iasecc IAS-ECC belpic Belpic cards entersafe entersafe epass2003 epass2003 rutoken Rutoken driver rutoken_ecp Rutoken ECP and Lite driver myeid MyEID cards with PKCS#15 applet dnie DNIe: Spanish eID card MaskTech MaskTech Smart Card esteid2018 EstEID 2018 idprime Gemalto IDPrime coolkey COOLKEY muscle MuscleApplet sc-hsm SmartCard-HSM mcrd MICARDO 2.1 / EstEID 3.0 - 3.5 setcos Setec cards PIV-II Personal Identity Verification Card cac Common Access Card (CAC) itacns Italian CNS isoApplet Javacard with IsoApplet gids GIDS Smart Card openpgp OpenPGP card jpki JPKI(Japanese Individual Number Cards) npa German ID card (neuer Personalausweis, nPA) cac1 Common Access Card (CAC 1) nqapplet NQ-Applet default Default driver for unknown cards |
...
| Info |
|---|
Pour résumer, OpenSC ne gère pas forcément tous les matériels mais il permet d'obtenir suffisamment d'informations pour permettre son identification. Comme proposé plus haut pour les lecteurs USB, n'hésitez pas à recenser ci-dessous la liste des matériels et des ATR qui fonctionnent ou non avec OpenSC. Dans la mesure du possible, il est préférable de demander un matériel pleinement opérationnel et supporté nativement par OpenSC. |
| OpenSC | 0.23.0 | 0.24.0 |
|---|---|---|
| Gemalto IDPrime 940 (3b:7f:96:00:00:80:31:80:65:b0:85:59:56:fb:12:0f:fe:82:90:00) | OK | OK |
| Gemalto IDPrime 940c (3b:7f:96:00:00:80:31:80:65:b0:85:05:00:39:12:0f:fe:82:90:00) | KO | ? |
...
| Remarque |
|---|
Il est possible de vérifier le référencement de l'ATR via ce site : Exemple pour Gemalto IDPrime 940 https://smartcard-atr.apdu.fr/parse?ATR=3b:7f:96:00:00:80:31:80:65:b0:85:59:56:fb:12:0f:fe:82:90:00 Exemple pour Gemalto IDPrime 940c https://smartcard-atr.apdu.fr/parse?ATR=3b:7f:96:00:00:80:31:80:65:b0:85:05:00:39:12:0f:fe:82:90:00 L'ATR doit à minima y être présent pour pouvoir être pris en charge par OpenSC |
Driver propriétaire
Si OpenSC embarque des drivers libres, il est aussi possible d'utiliser des drivers propriétaires avec les utilitaires proposées par OpenSC.
Ainsi la commande pkcs11-tool admet en option --module
Ainsi on peut tester l'authentification via le code pin sur la carte, avec la commande suivante (libIDPrimePKCS11.so est le driver propriétaire de certinomis ici) :
| Bloc de code | ||
|---|---|---|
| ||
# pkcs11-tool --login --test --module /usr/lib/pkcs11/libIDPrimePKCS11.so |
Pour lister les objets :
| Bloc de code | ||
|---|---|---|
| ||
# pkcs11-tool -O --module /usr/lib/pkcs11/libIDPrimePKCS11.so
Using slot 0 with a present token (0x0)
Certificate Object; type = X.509 cert
label: PRM_CAC_QSCD
subject: DN: C=FR, O=Certinomis/organizationIdentifier=NTRFR-433998903, CN=Certinomis - Prime CA G2
serial: 8CC62F2DAD75D1B7C2CC22354920843D6311D849
ID: da534a908725de6d7f86845a4bccb662afce71cd
Certificate Object; type = X.509 cert
label: PRM_CAC_QSCD
subject: DN: C=FR, O=Certinomis, OU=0002 433998903, CN=Certinomis - Root CA
serial: 01
ID: 51b4b5cb135859dcfb983733e0de571d25b3afc0
Certificate Object; type = X.509 cert
label: PRM_CAC_QSCD
subject: DN: C=FR, ST=75, L=Paris, O=CONSORTIUM ESUP PORTAIL/organizationIdentifier=NTRFR-508669561, OU=0002 508669561/serialNumber=204277ILI131, CN=CONSORTIUM ESUP PORTAIL - SIGNATURES
serial: 24F7DE1DDFD9B0A9E4C5B8F77A8B338C
ID: 3de88247375e5fb19cab3c31f1776b98f738f02f
Public Key Object; RSA 4096 bits
label: PRM_CAC_QSCD
ID: 3de88247375e5fb19cab3c31f1776b98f738f02f
Usage: encrypt, verify, wrap
Access: local |
Par rapport au driver libre embarqué dans opensc, on constate au passage que les id sont différents, là où la clef publique avait pour id 0001 on a maintenant 3de88247375e5fb19cab3c31f1776b98f738f02f
Ainsi, pour lire le certificat, esup-signature/esup-dss-client devra utiliser comme commande non pas (comme donné par défaut, en dur actuellement) :
| Bloc de code | ||
|---|---|---|
| ||
pkcs11-tool -r --id 0001 --type cert |
mais :
| Bloc de code | ||
|---|---|---|
| ||
pkcs11-tool -r --id 3de88247375e5fb19cab3c31f1776b98f738f02f --type cert --module /usr/lib/pkcs11/libIDPrimePKCS11.so |
Logs debug
Si vous souhaitez récupérer des informations de debuggage, vous avez 2 possibilités :
...