Normalmente, utilizzo la mia scheda PKCS # 11 per accedere a un sito protetto utilizzando un plug-in del browser che ha avviato una finestra di dialogo del software locale per l'inserimento del PIN della scheda PKI.
È comunque possibile fare quanto segue?
- Esegui alcuni strumenti della console
- Lo strumento richiede idealmente il PIN direttamente o almeno attiva la finestra di dialogo standard
- Le informazioni di autenticazione possono essere inviate al sito di localizzazione sicura
Ho provato finora OpenSC ma dice che la scheda non è supportata.
Questa domanda si concentra su come eseguire la parte di autenticazione con la scheda PKI, non su come utilizzare l'API del sito protetto.
Aggiorna
Alcuni risultati finora basati sulla risposta di @ phl.
Per verificare le funzioni offerte dal driver della scheda, ho fatto quanto segue.
# explore Debian package of the driver installer
dpkg -c <filename>.deb | grep .so
# list functions offered by the library and search for the target function
nm -D <library> | grep C_GetFunctionList
Eccolo!
<hexvalue> T C_GetFunctionList
Quindi, ho provato a chiamare questa funzione da Python / ctypes .
from ctypes import *
cardfun1 = cdll.LoadLibrary("xxxxyyy.so")
print(cardfun1.C_GetFunctionList(None))
E l'output è: 7
. Che cosa allora?!
Inoltre, la mia impressione è che dovrebbe essere in qualche modo possibile combinare OpenSSL con il driver, ma negli esempi che posso trovare finora le persone usano la scheda per memorizzare la chiave SSH.
Conclusione
Sebbene OpenSSL non sia possibile con questa carta (nessuna funzione esportata bind_engine), con PyKCS11 è comunque possibile utilizzare il PIN della carta e chiamare le sue funzioni di sicurezza. Quindi il suggerimento di @phl è la risposta.
session = pkcs11.openSession(slot, CKF_SERIAL_SESSION | CKF_RW_SESSION)
session.login(<PIN>)