No hacerlo con JavaScript. JavaScript cryptography has a number of problems, y no creo que muchos navegadores le permitan acceder al PKCS # 11 directamente desde JavaScript (ejecutándose desde dentro de la página) fácilmente.
Varios navegadores son compatibles con PKCS # 11 para autenticación HTTPS, es decir, usan PKCS # 11 para autenticación de certificado de cliente como parte de la conexión SSL/TLS (como parte de HTTPS).
Asumiendo que ya tiene una biblioteca PKCS # 11 disponibles (digamos OpenSC en /usr/lib/opensc.so
), puede configurar Firefox para usarlo:
- Preferencias -> Avanzado -> Cifrado, ir en "Dispositivos de Seguridad"
- Haga clic en 'Load'
- Elija un nombre de módulo (para su propia referencia de la lista) y el punto en el fichero de
/usr/lib/opensc.so
(o lo que sea el módulo PKCS # 11 es adecuada en su caso).
Luego, cuando se conecta a un sitio web que solicita un certificado de cliente, el navegador debe ofrecerle elegir un certificado del dispositivo habilitado para PKCS # 11.
El mecanismo de configuración PKCS # 11 variará de un navegador a otro, pero generalmente es una cuestión de establecer la ruta del módulo PKCS # 11.
Hasta donde yo sé, Internet Explorer no utiliza PKCS # 11 (al menos no sin soporte adicional), sino que debe confiar en MS CryptoAPI y en las tarjetas de información en su lugar.
En el lado del servidor, deberá configurar el requisito para la autenticación del certificado del cliente. Nada específico para PKCS # 11 allí.
Después de su edición, usted debe leer acerca de autoridades de certificación (CA) y las infraestructuras de clave pública (PKI). Puede implementar su propia PKI interna, pero parece que sus requisitos son integrarse con una PKI existente. Este es un problema administrativo principalmente, así que consulte con aquellos que hacen este requisito para ver en qué CA desean confiar (probablemente la suya).
Al usar autenticación de certificado de cliente, el cliente presentará su certificado (que contiene la clave pública del usuario y otros atributos, incluido un identificador: el nombre distinguido del sujeto) y el protocolo de enlace SSL/TLS garantizará que el cliente clave privada para este certificado de clave pública. Luego, el servidor verifica este certificado contra las CA en las que confía (eso también es una configuración de SSL en el lado del servidor).
Una vez que haya configurado las CA en las que desea confiar, la asignación generalmente se realiza utilizando el DN del asunto del certificado a un nombre de usuario interno si es necesario. No hay una regla rígida para esto, ya que depende de su esquema de nombres de usuario interno. Dicho esto, a menudo es sensato utilizar el DN completo del sujeto como nombre de usuario.
Gracias. Esto me esclareció un montón de cosas y, en base a esto, pude enviar más preguntas al proveedor de tarjetas inteligentes sobre cómo se manejarán los certificados. –