VPN con certificado de cliente a través de PKI administrada: ¿de dónde proviene la clave privada?

7

$ company permite a los usuarios de Mac solicitar un certificado de cliente a través de Symantec PKI para conectarse a su servidor VPN SSL. Este proceso implica ir a un sitio web específico de Symantec (tiene algún tipo de identificación para identificar a $ compañía) e ingresar su nombre ("Nombre común") y la dirección de correo electrónico. Una vez aprobado por un administrador de la empresa, le proporciona un enlace que descarga un archivo .cer , y cuando se importa a Keychain , hay un Certificado con nombre de usuario y una clave privada vinculada a él.

¿De dónde viene esa clave privada? No aparece en el archivo .cer (que parece ser 3 certificados empaquetados en formato PKCS # 7). ¿Hay algún disparador cuando se importa que le dice a Keychain que vaya a buscar una clave privada del servidor PKI? ¿Hay alguna herramienta genérica (por ejemplo, openssl ) para hacer eso en Linux?

Editar:

El archivo .cer contiene un certificado con CN=MyNameHere (el usuario), un certificado de CA Emisora que pertenece a $ company y un certificado de CA Intermedia que también pertenece a $ company.

Aquí hay un artículo que explica cómo exportar la clave privada desde Windows, pero Desafortunadamente, tampoco explica cómo llegó allí la clave privada.

Aquí hay otro documento desde la perspectiva de Mac sobre la exportación de la clave privada, pero de nuevo no se explica cómo la clave llega allí en primer lugar.

    
pregunta AndyC 15.03.2016 - 11:16
fuente

5 respuestas

5

Sin embargo, sospecho que en el navegador está usando generateCRMFRequest y importUserCertificate en combinación. Se proporciona una descripción general del proceso en la documentación obsoleta Javascript_crypto para Firefox.

Se pueden lograr cosas similares con Internet Explorer . No he mirado, pero me imagino que Safari también tiene cierto nivel de soporte.

Se trata de extensiones totalmente no estándar y de acuerdo con esta publicación en el foro de CA / Browser , no el futuro.

La clave se genera localmente, sin embargo, es difícil saber si la clave también se envía a la CA para "archivar" como en generaCRMFRequest. Dado que el javascript tiene acceso a la clave generada, posiblemente podría enviarla a través de Internet.

Bit de información final, ¿existe una herramienta genérica para hacer esto en Linux? No que yo sepa. Ciertamente puedes pasar por el proceso de:

openssl genrsa ... -out private.key
openssl req -new ... -inkey private.key -out certplease.csr

enviando certplease.csr a la CA. De ellos obtendría un certificado PKCS # 7 firmado por ellos (y posiblemente otros certificados en la cadena, en caso de que sean necesarios).

Sin embargo, no creo que haya un almacén de claves privadas estándar basado en el usuario en Linux, sino que cada entorno de escritorio tiene un entorno ligeramente diferente.

    
respondido por el diagprov 18.03.2016 - 04:03
fuente
2

Esta es una pregunta fascinante.

Primero, algunas reflexiones sobre el archivo .cer que obtienes: Consulte la lista de estándares PKCS ; PKCS # 7 es solo un contenedor para el transporte de datos firmados / encriptados, que no nos dice nada acerca de cuáles podrían ser esos datos. Si los datos internos estaban en formato PKCS # 12 , entonces es completamente posible que la clave privada esté incluida en el paquete. Supongo que la pregunta importante es: ¿tuvo que ingresar una contraseña como parte de la importación de .cer ?

Symantec Managed PKI

Hay algunos consejos (pero no hay respuestas) en Servicio de PKI administrado por Symantec ™ Guía de opciones de implementación .

Usted está describiendo claramente

  

2.1.1 Inscripción en el navegador nativo

     

La inscripción del navegador nativo no requiere que se instale ningún software en la computadora del usuario final, y funciona tanto en la nube como en la versión híbrida   escenarios.

Aunque carece de detalles sobre dónde se genera la clave.

Hacer que el servidor genere una clave privada para ti y agruparlo en el archivo .cer sería coherente con oraciones como esta:

  

... Esta opción es importante para garantizar que los certificados de alta seguridad, como una tarjeta inteligente o un token USB, terminen en la tienda adecuada.

Dado que los certificados son, por definición, públicos, la única forma en que la frase "certificados de alta seguridad" tiene sentido es si hay una clave privada incluida.

También hacen muchas referencias a los servicios de administración de claves / inscripciones de Microsoft Active Directory. Pero eso no explica tu caso de Linux.

Editar: Duh. Otra cosa que es posible es que el navegador tenga acceso a la funcionalidad criptográfica del sistema operativo (por ejemplo, Microsoft CAPI ) y el javascript en el La página de inscripción obtiene el sistema operativo para crear una clave privada y generar una solicitud de certificado que incluye una prueba de posesión de esa clave.

    
respondido por el Mike Ounsworth 18.03.2016 - 03:01
fuente
1

La clave privada es generada por el cliente que crea la solicitud de certificado. Cuando el cliente importa el certificado, la aplicación Keychain reconoce automáticamente que este certificado es para esa clave privada específica.

    
respondido por el Daniel A 15.03.2016 - 15:01
fuente
1

No estoy seguro acerca de Symantec, pero Comodo hace unos años (~ 2012) usó html5 keygen para este propósito. La etiqueta Keygen genera el formato SPKAC csr y la interfaz de usuario normalmente (en la página web) contiene un cuadro desplegable con las longitudes de clave disponibles. enlace

Keygen es (fue) compatible con Firefox, Chrome y Opera, nunca ha sido compatible con Internet Explorer.

En el caso de opera12, después de pasar por el formulario de keygen, pero antes de recibir el certificado, solía haber claves privadas sin adjuntar en el administrador de certificados, que se generaron para ese CSR. (y si el certificado final nunca llega, esas claves permanecerán en el administrador de certificados para siempre). (pestaña personal, en el administrador de certificados).

No conozco detalles exactos sobre cómo se maneja esto con Firefox o Chrome.

    
respondido por el yyy 18.03.2016 - 12:07
fuente
0

Una CA emite certificados digitales a entidades e individuos después de verificar su identidad. Firma estos certificados utilizando su clave privada; su clave pública se pone a disposición de todas las partes interesadas en un certificado CA autofirmado. Las CA utilizan este certificado raíz de confianza para crear una "cadena de confianza": muchos certificados raíz están integrados en los navegadores web, por lo que cuentan con una confianza integrada en esas CA. Los servidores web, los clientes de correo electrónico, los teléfonos inteligentes y muchos otros tipos de hardware y software también admiten PKI y contienen certificados raíz de confianza de las principales entidades emisoras de certificados.

Una PKI típica consiste en hardware, software, políticas y estándares para administrar la creación, administración, distribución y revocación de claves y certificados digitales. Los certificados digitales están en el corazón de PKI, ya que afirman la identidad del sujeto del certificado y vinculan esa identidad a la clave pública contenida en el certificado.

Una PKI típica incluye los siguientes elementos clave:

  • Una parte de confianza, llamada autoridad de certificación (CA), actúa como raíz de la confianza y proporciona servicios que autentican la identidad de individuos, computadoras y otras entidades

  • Una autoridad de registro, a menudo llamada CA subordinada, certificada por una CA raíz para emitir certificados para usos específicos permitidos por la raíz

  • Una base de datos de certificados, que almacena solicitudes y problemas de certificados y revoca certificados

  • Un almacén de certificados, que reside en una computadora local como un lugar para tienda emitida certificados y claves privadas

Junto con la clave pública de una entidad o individuo, los certificados digitales contienen información sobre el algoritmo utilizado para crear la firma, la persona o entidad identificada, la firma digital de la AC que verificó los datos del sujeto y emitió el certificado, el propósito de el cifrado de la clave pública, la firma y la firma del certificado, así como un intervalo de fechas durante el cual el certificado puede considerarse válido.

    
respondido por el Cameron Verotti 18.03.2016 - 00:49
fuente

Lea otras preguntas en las etiquetas