¿Alternativas al keygen obsoleto de HTML para certificados de cliente?

20

La etiqueta keygen se usa para hacer que los navegadores generen claves privadas y POST la CSR resultante al servidor, que luego puede emitir un certificado. Ahora ha sido deprecated , por razones bastante estúpidas, pero eso no es el punto .

Entonces, ¿cuáles son las alternativas para que un navegador obtenga un certificado de cliente?

    
pregunta André Borie 23.11.2015 - 09:55
fuente

4 respuestas

7

En esta publicación en el foro de Chromium hay alternativas mencionadas

  

Dentro del espacio del navegador, existen alternativas como:

     
  • Use las capacidades de administración nativas del dispositivo en caso de uso empresarial. En Windows, esta es la directiva de grupo. En iOS / Android, esta es la   suites de gestión de dispositivos móviles. En OS X, esta es la configuración de la empresa.   En ChromeOS, hay chrome.enterprise.platformKeys [11] para   Extensiones administradas por la empresa.
  •   
  • Use WebCrypto para implementar la inscripción de certificados, luego entregue el certificado y la clave privada (exportada) en un formato apropiado para   la plataforma (como PKCS # 7) y permitir que la interfaz de usuario nativa del sistema operativo guíe   usuarios a través de la instalación de certificados y claves.
  •   

WebCrypto es compatible con muchos navegadores: [link]

Y puedes usar openpgp.js y otras soluciones. [openpgp.js]

Aquí hay algunos ejemplos.

También puede generar una CSR: enlace

Algunas bibliotecas para generar CSR: enlace

Aquí hay un ejemplo con PKIjs para generar certificados X509 autofirmados + los pares de llaves:

enlace

La función generateKey() crea pares de teclas.

enlace

    
respondido por el Daniel Ruf 03.12.2015 - 16:29
fuente
4

La API de WebCrypto no es actualmente una alternativa para la etiqueta keygen, como lo confirma el WebCrypto API spec :

  

Esta API, si bien permite que las aplicaciones generen, recuperen y manipulen material de claves, no aborda específicamente el aprovisionamiento de claves en determinados tipos de almacenamiento de claves, como elementos seguros o tarjetas inteligentes. Esto se debe a que estas operaciones de aprovisionamiento a menudo están cargadas con detalles específicos del proveedor que hacen que la definición de una interfaz independiente del proveedor sea una tarea indefinidamente inadecuada. Además, esta API no trata ni aborda el descubrimiento de módulos criptográficos, ya que tales conceptos dependen del agente de usuario subyacente y no son conceptos que sean portátiles entre sistemas operativos comunes, bibliotecas criptográficas e implementaciones.

    
respondido por el Graham Leggett 15.12.2016 - 17:21
fuente
0

Acabo de escribir una utilidad de certificado de cliente basada en la web que es completamente de navegador cruzado (aunque requiere navegadores modernos). Permite a los usuarios realizar autenticación con contraseña única y autenticación con un solo clic. Sus claves se cifran con su única contraseña, por lo que es un poco más seguro que las claves <keygen> (ya que no están protegidas por contraseña). Eventualmente, los usuarios podrán crear y usar identidades múltiples que pueden ser diferentes para diferentes sitios web, o incluso cambiar entre el mismo sitio. Además, está controlado completamente a través de javascript, por lo que puede autenticar a alguien cuando lo desee, no solo antes de cargar la página.

Compruébelo aquí: enlace

    
respondido por el B T 05.04.2016 - 07:54
fuente
0

En este punto (abril de 2017) tuve que crear una aplicación nativa. Solo FireFox trabaja con la etiqueta keygen y, independientemente de la biblioteca de JavaScript que encuentre, no podrá importar el certificado a Windows, por lo que se puede usar desde Chrome, por ejemplo.

    
respondido por el Michael 13.04.2017 - 21:59
fuente

Lea otras preguntas en las etiquetas