Normalmente, uso mi tarjeta PKCS # 11 para iniciar sesión en un sitio seguro mediante un complemento del navegador que inició un diálogo de software local para ingresar el PIN de la tarjeta PKI.
¿Es posible hacer lo siguiente?
- Ejecutar alguna herramienta de consola
- Lo ideal es que la herramienta solicite el PIN directamente o, al menos, active el diálogo estándar.
- La información de autenticación se puede enviar al sitio de ubicación segura
Hasta ahora he intentado OpenSC pero dice que la tarjeta no es compatible.
Esta pregunta se centra en cómo realizar la parte de autenticación con la tarjeta PKI, no en cómo utilizar la API del sitio seguro.
ACTUALIZAR
Algunos hallazgos hasta el momento se basan en la respuesta de @phl.
Para verificar las funciones ofrecidas por el controlador de la tarjeta, hice lo siguiente.
# 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
¡Aquí estaba!
<hexvalue> T C_GetFunctionList
Luego, he intentado llamar a esta función desde Python / ctypes .
from ctypes import *
cardfun1 = cdll.LoadLibrary("xxxxyyy.so")
print(cardfun1.C_GetFunctionList(None))
Y la salida es: 7
. ¡¿Entonces qué ?!
También, mi impresión es que debería ser posible de alguna manera combinar OpenSSL con el controlador, pero en los ejemplos que puedo encontrar hasta ahora, las personas usan la tarjeta para almacenar la clave SSH.
CONCLUSION
Si bien OpenSSL no es posible con esta tarjeta (no se utiliza la función bind_engine), con PyKCS11 es posible usar el PIN de la tarjeta y llamar a sus funciones de seguridad. Así que la sugerencia de @phl es la respuesta.
session = pkcs11.openSession(slot, CKF_SERIAL_SESSION | CKF_RW_SESSION)
session.login(<PIN>)