Pregunta Agregar nombres alternativos de sujeto (SAN) a una solicitud de firma de certificado (CSR) existente


¿Puede alguien decirme cómo puedo agregar una cantidad de nombres alternativos de sujeto a un CSR existente?

No estoy hablando de generar una CSR con SAN o agregar SAN al momento de firmar, sé cómo hacer ambas cosas.

Fondo: El problema que tenemos es que los chasis blade de HP permiten generar CSR, pero solo permiten una única SAN. No podemos usar una CSR generada en otro lugar, ya que no pudimos usar el certificado resultante, ya que no hay manera (que pueda encontrar) de cargar la llave en el chasis blade.

El proceso estándar de nuestra CA no permite agregar SAN. El tiempo de firma. Están dispuestos a experimentar, sin embargo, estoy tratando de encontrar una solución, ya que esto significará que no tendremos que confiar en que tengan un proceso no estándar para nosotros, en mi experiencia si necesitan usar un proceso no estándar la vida eventualmente se volverá difícil. P.ej. cuando un miembro del personal que conoce el proceso no estándar no está presente debido a que se va, etc.

El método actual es conectarse al administrador a bordo de bladechassis a través de la interfaz gráfica de usuario web y generar el CSR con un solo CN.

La interfaz gráfica de usuario solo permite una SAN única en la CSR.

Luego lo autofirmamos con la siguiente estrofa en la configuración de openssl:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

El certificado resultante tiene las SAN adicionales.


9
2018-03-31 03:32


origen


¿Cómo está generando los certificados en el chasis blade actualmente? ¿Qué método está utilizando para conectar, etc., qué modelo de chasis blade? - Eli
El chasis es un c7000. Sí, actualmente estamos creando CSR en el chasis y agregando la SAN al momento del inicio de sesión, pero eso es para certificados autofirmados. - Jason Tan
¿Qué método está utilizando para conectarse a él actualmente y cuál es su proceso para generar certificados para él? - Eli
He editado la pregunta principal para incluir el método actual. - Jason Tan
¿Puede importar el certificado y la clave privada si lo genera en otra máquina y lo exporta? - Clint


Respuestas:


Si su chasis no admite la adición de SAN, deberá sacar la llave del chasis y generar el CSR con openssl.

Asegurarse req_extensions = v3_req esta sin comentar en el [ req ] sección.

Añade el subjectAltName al [ v3_req ] sección.

Generar un nuevo CSR.

openssl req -new -key extracted_c7000.key -out your_new.csr

No puede editar una CSR existente.


15
2018-04-08 09:58



Lo que dijo cakemox. Si pudiera editar un certificado (es decir, un CSR firmado) después de haberlo firmado, se anularía todo el propósito de las autoridades de certificación. - MadHatter
No quiero editar la CSR después de que esté firmada; eso, como usted dice, derrotará a Puprose. Quiero editar el CSR después de que se genere, pero ANTES de que esté firmado. Definitivamente es posible editar partes de un CSR antes de firmar usando openssl. - Jason Tan
Si pudiera descargar la llave, lo haría. Lo siento, no mencioné eso en la pregunta original, pero no he podido encontrar la forma de descargar la clave. Estaría encantado de pagar la recompensa a alguien que podría decirme cómo descargar la clave. - Jason Tan
FYI - Definitivamente es posible editar partes de una CSR antes de firmar usando openssl en particular la opción "openssl req -subj". Sin embargo, esto no lo hará, por lo que sé, agregue la extensión SAN v3, solo le permitirá especificar una nueva línea de asunto que incluya CN adicionales. - Jason Tan
El CSR está firmado por la clave privada de la máquina, por lo que no puede editarlo después de que se haya generado (o de lo contrario ya no se podría firmar). Es posible que la CA edite los campos puestos en el certificado público sin embargo; esta es la única forma de cambiar el campo SAN (sobre el que no tiene control si lo está enviando a una CA pública). - Chris S


Nota IMPORTANTE:  Todo esto es algo especulativo, por lo que si está metido en el código y no está de acuerdo con lo que estoy diciendo, crea el código. No soy un experto en CA, solo toco uno en la TV. Dicho esto:

Como característica de los CSR, será difícil. El último paso para generar un CSR mediante programación es agrupar todo lo que has creado y luego firmarlo con la clave privada. Entonces, si bien podría agregar esos atributos al texto de la CSR, la firma no coincidiría con el contenido, por lo que ninguna CA lo firmaría.

En su caso, sin embargo, usted controla (o está al menos en contacto con) la CA. Esto te da dos opciones:

  1. Puede indicar a la CA que ignore alegremente la firma en la CSR y que emita un certificado de todos modos.
  2. Puede hacer que la CA emita un certificado diferente de lo que se solicita (por ejemplo, agregando atributos).

De estos, el # 1 parece, con mucho, el más fácil. Tendrá que romper el sello de seguridad en OpenSSL para que lo haga, pero tiene algunas funciones que deberían facilitarlo un poco. Comenzaría con asn1parse, que le mostrará cómo separar la CSR.


0
2018-04-14 12:49



En una investigación más a fondo, la opción # 2 es en realidad bastante simple, también, y está hecha por varios CA's (por ejemplo, para agregar site.com a un www.site.com certificado como SAN). - BMDan


Si bien la respuesta de cakemox es definitivamente la más fácil si de alguna manera puede obtener una copia de la clave privada, hay otra forma si no puede, simplemente, volver a firmar el CSR con un certificado de "Agente de inscripción".

Esta blog css-security.com Tiene todos los detalles esenciales. Pero la visión general de alto nivel del proceso se ve así:

  • Adquirir un certificado de agente de inscripción
  • Modificar una plantilla de certificado SSL para requerir un certificado de EA para su emisión
  • Adquirir una CSR que necesita información SAN
  • Use el certificado de EA para renunciar a la CSR mientras agrega la información de SAN

Cuando intenté esto personalmente, estoy bastante seguro de que me salté la parte sobre la modificación de la plantilla de certificado. Suponiendo que puede generar un certificado de agente de inscripción por sí mismo, el proceso real se parece a esto.

Crea un san.inf con la información de la extensión SAN en él.

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

Vuelve a firmar la solicitud

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

Presentar la solicitud corregida

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

Y luego proceder con normalidad con el proceso de emisión.


0
2017-12-08 16:42