CSR con solo clave pública con openssl

3

Así que he estado haciendo mi investigación y no he encontrado nada lo suficientemente específico para mi problema. Como indica el título de la pregunta, quiero hacer una CSR solo con la clave pública. Lo que he podido hacer es generar un CSR con la información de mi elección junto con un nuevo par de llaves. Y luego use algo como esto para obligarlo a usar la clave pública que quiero al hacer el certificado.

openssl x509 -req -in mycsr.pem -force_pubkey mypubkey.pem -CA dumyCA.pem -CAkey -dumyCA.pem -out mycert.pem

Después de esto, tomo el certificado emitido y cambio sus atributos para asociarlo con una clave privada. Todo esto funciona muy bien. El problema con esto es que si tomara el csr mencionado y lo enviara a una CA, me devolverían un certificado que usaba la clave que se generó cuando se genera el csr. Por eso mi pregunta.

EDITAR: Así que tengo un par de claves, pero mi clave privada está en un módulo HSM que no tiene capacidades de exportación. Puedo obtener un archivo .pem de la clave pública. Y después de realizar el certificado con el comando que di, lo ejecuto a través de un programa que lo asocia con la clave privada. Entonces, mi nueva pregunta es: ¿usando la API openssl podré crear mi propio csr? Así que puedo firmarlo con la clave privada sin tener que tenerla en un archivo y asociarla con la clave pública que tengo.

    
pregunta embasa 03.03.2016 - 10:09
fuente

1 respuesta

3

La solicitud de firma de certificado, como la genera el comando:

openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key

Incluirá tu clave pública. Esto es obligatorio según el proceso de PKI. El CSR, que contiene la información de su entidad y la clave pública, se envía a cualquier Autoridad de Certificación que desee para una solicitud de certificado (de ahí el nombre de CSR). La CSR se firma utilizando la clave privada que está vinculada a la clave pública incorporada.

La CA, después de evaluar su identidad, básicamente firmará la CSR para crear un certificado válido para usted. Este es el certificado que enviará a los clientes, por ejemplo, cuando se conectan a su sitio web.

El servidor web utilizará la clave privada en su archivo privateKey.key para descifrar los mensajes que se le envíen. Esta clave privada nunca debe abandonar el servidor.

Puede consultar los Los comandos openSSL más comunes para obtener más información.

    
respondido por el M'vy 03.03.2016 - 10:39
fuente

Lea otras preguntas en las etiquetas