¿Una clave pública permanece igual cuando se renueva un certificado? [duplicar]

1

Por lo tanto, estoy implementando la fijación de certificados en iOS y se recomendó que verifiquemos la cadena de certificados utilizando valores hash de clave pública.

La razón de esto radica en el hecho de que se nos dijo que la renovación del certificado del servidor mantuvo la misma clave pública. Como tal, el certificado en el servidor podría renovarse cuando expirara, y dicha renovación no tendría ningún impacto en la aplicación.

IOW, no necesitaría actualizar la aplicación con un nuevo certificado.

Tenga en cuenta que los certificados en cuestión están firmados por una CA pública (Digicert).

Actualmente, solucionamos el problema fijando el certificado intermedio que firmó el certificado de hoja (mayor vida útil). Igualmente, es algo menos seguro que sujetar a la hoja.

Sin embargo, he encontrado algunos comentarios que implican que renovar un certificado de hoja crea una nueva clave pública. Particularmente si esa renovación se realiza generando una nueva CSR.

Entonces, ¿cuál es?

O para reiterar la pregunta:

Cuando instalé certificados en un servidor, normalmente lo hago creando un CSR de renovación y entregándolo a la CA. Cuando la CA me dé un nuevo certificado (renovado) y lo instale, ¿tendrá la misma clave pública que el certificado anterior?

Si la respuesta es siempre: sí, entonces estoy bien. Si la respuesta es no, entonces necesito hacer otra cosa.

Y si la respuesta es un "tal vez" definitivo, entonces estoy prácticamente en el mismo barco que un no.

    
pregunta Michael Long 25.09.2018 - 18:37
fuente

2 respuestas

3
  

Normalmente lo he hecho creando una CSR de renovación y entregándoselo a la CA. Cuando la CA me dé un nuevo certificado (renovado) y lo instale, ¿tendrá la misma clave pública que el certificado anterior?

La CA copia la clave pública de la CSR al certificado. Cuando creas el CSR, depende de ti qué clave pones en él. Puede elegir usar la misma clave que la última vez, puede elegir usar una clave recién generada, puede usar una clave que acaba de sacar de su bóveda de almacenamiento en frío, todo depende de usted.

  

Actualmente, solucionamos el problema fijando el certificado intermedio que firmó el certificado de hoja (mayor vida útil).

Esta es una mala idea. No hay garantía de que los futuros certificados se emitirán desde el mismo certificado intermedio.

  

Así que estoy implementando el anclaje de certificados

Sugiero fuertemente lo siguiente.

  1. Sólo fija la clave de la entidad final, no intentes anclar toda la cadena. No tiene idea de si los certificados futuros se emitirán con las mismas claves raíz e intermedias.
  2. Asegúrese de tener llaves de repuesto que serán reconocidas por su cliente, que su aplicación reconozca solo una sola tecla que lo deja en alto sin una paleta si esa tecla está comprometida. Sus llaves de repuesto deben guardarse en un lugar frío e idealmente deben incluir una selección de tipos / fortalezas en caso de que necesite cambiar a llaves más fuertes en el futuro.
respondido por el Peter Green 25.09.2018 - 19:47
fuente
0

A VECES, una clave se reutiliza. Si no tiene motivos para creer que la clave antigua esté comprometida, esta puede ser una buena idea.

Pero si una clave está comprometida (por ejemplo, alguien robó su clave privada), entonces necesita poder generar una nueva clave. Por lo tanto, su aplicación debe poder manejar la reutilización de una clave antigua O la generación de una nueva clave.

Debes verificar absolutamente la cadena de certificados. Eso es parte de la apertura de una conexión TLS de confianza. Más exactamente, debe configurar la biblioteca estándar que esté utilizando, como OpenSSL, para que lo haga por usted.

Y para la fijación de certificados debe comprobar el certificado de hoja. Supongo que una biblioteca también puede hacer esto por ti, pero no tengo experiencia con eso.

    
respondido por el Ben 25.09.2018 - 20:33
fuente

Lea otras preguntas en las etiquetas