¿Es posible generar un certificado SSL en el navegador?

Para una interfaz de administración, queremos implementar la autenticación del cliente con SSL. La idea es que durante el proceso de registro cada usuario genere un certificado SSL, que se registra en el navegador y se utiliza para autenticar al cliente en el servidor. Es importante que la clave privada nunca abandone al cliente. Por lo tanto, no es una solución generar el certificado en el servidor y enviarlo al cliente.

¿Es posible generar un certificado SSL en el navegador (por ejemplo, IE 9+, Firefox 12+, Chrome) usando JavaScript? ¿Es posible registrar un certificado?

preguntado el 22 de mayo de 12 a las 11:05

Estoy bastante seguro de que puedes generar un certificado SSL, pero dudo que puedas registrarlo. -

Lo he visto hacer antes con sitios web financieros. Pero era más instalar un ActiveX o ejecutar una aplicación y generaría la solicitud, el certificado y lo instalaría en el almacén de certificados personales. También pudo evitar que se exportara entre computadoras o perfiles. Cómo, no estoy seguro. -

¿Está tratando de generarlo sobre la marcha durante el registro? No creo que puedas a menos que el usuario tenga instalado algo como OpenSSL. -

En cuanto a la viabilidad, definitivamente hay sitios web que generan certificados de cliente a través del navegador, pero una implementación que vi fue en VBScript (oh Dios) y obviamente solo funcionó en IE. -

1 Respuestas

Realmente no puedes generar un certificado en el navegador, pero puede generar un solicitud de certificado (o equivalente) en el navegador: el par de claves se genera dentro del navegador y la clave privada nunca lo abandona.

(Tenga en cuenta que si generó un certificado directamente en el navegador, en el mejor de los casos estaría autofirmado, ya que la CA no le daría su clave privada. Es por eso que solo puede tener una solicitud de certificado, ya que hay poca demanda para generar certificados autofirmados. Sin embargo, creo que hay una extensión de Firefox que podría hacerlo).

La solicitud de certificado se envía al servidor, pero el formato depende del navegador y el método utilizado. Lo que obtendrá del lado del servidor es la clave pública, depende del servicio que implemente convertirlo en un certificado (a menos que use un servicio existente, por supuesto). Puede encontrar más detalles sobre esto en esta respuesta.

Una vez que el certificado se genera en el servidor, se puede volver a importar para asociarlo con la clave privada.

contestado el 23 de mayo de 17 a las 12:05

@brianary ¿Puede proporcionar evidencia de esto? Es posible que StartSSL.com haya proporcionado certificados gratuitos, pero eso no significa que el certificado en sí se haya generado dentro del navegador. ¿Cómo sabría que no solicitó al servidor que le devolviera su certificado desde el navegador? - Marrón

Este fue el error que reporté en Firefox en 2014 bugzilla.mozilla.org/show_bug.cgi?id=1089474 - Brianary

Parece que leí mal los detalles de tu respuesta. Lo lamento. - Brianary

@brianary Así que sí, en 2012, la API criptográfica web no estaba tan desarrollada como ahora, y usted no podía generar un certificado en el navegador. Solo podía generar la CSR, enviarla al servidor y recuperar el certificado desde ese servidor que había generado el certificado al firmarlo con su clave privada. De hecho, la nueva API criptográfica puede generar certificados en el navegador, ya que no tiene mucho sentido firmar un certificado con una clave privada enviada al navegador (desde el punto de vista de la seguridad). - Marrón

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.