¿Cómo puede OpenSSL generar una CSR sin la clave pública?

0

Bien, los pasos generales para realizar una solicitud de firma de certificado son (como yo lo entiendo) de la siguiente manera:

  • Generar un par de claves
  • Poner mi información de identificación y la clave pública (o su hash) en un documento
  • Firme ese documento (CSR) con la clave privada generada
  • Envíe el CSR a una CA que verificará que soy yo y que devolverá un certificado firmado con cadena de confianza (posiblemente)

Dado que el certificado firmado real es para asociar una relación de confianza entre mi clave pública y mis credenciales, no se puede firmar un certificado sin acceso a la clave pública o al menos un hash de la clave pública.

Esta es la confusión para mí: veo que hay un comando que puedo ejecutar en OpenSSL:

openssl req -out CSR.csr -key privateKey.key -new

Esto supuestamente crea una nueva CSR utilizando solo la clave privada. No puedo ver cómo puede funcionar esto.

¿La clave pública o su hash se ocultan en secreto dentro del archivo de clave privada?

    
pregunta Tim Spears 07.02.2017 - 19:17
fuente

1 respuesta

3

Una clave privada no es solo un número grande, en realidad es una estructura de datos con varios números.

Así es como se ve una clave pública (RSA):

<RSAKeyValue>
    <Modulus>yIf6e2K99p7hyCPlpjR0TDpH6Cpxy/zxctg/G8xHVGxtM00z6p9svf9YoT+TraHM8i6ZFtod9emkNSq8jAcWfWQ1q0xzuSmJNo74ZHFardNzH/oGExVpfiO1qCgeAnI3ILn5jTyV7g82j2wPImdAiL/wA7TfhE93POrKdrP1QpM=
    </Modulus>
    <Exponent>AQAB</Exponent>
</RSAKeyValue>

Y privado:

<RSAKeyValue>
    <Modulus>yIf6e2K99p7hyCPlpjR0TDpH6Cpxy/zxctg/G8xHVGxtM00z6p9svf9YoT+TraHM8i6ZFtod9emkNSq8jAcWfWQ1q0xzuSmJNo74ZHFardNzH/oGExVpfiO1qCgeAnI3ILn5jTyV7g82j2wPImdAiL/wA7TfhE93POrKdrP1QpM=
    </Modulus>
    <Exponent>AQAB</Exponent>
    <P>8KXqVAlsMtguk+xtLysbpcKYtNRIvLcORUc7SXtnMi6rtWnQ807IRfpXXDqK8BVDSCZCaNp5/lKFE4YSPqEKlQ==
    </P>
     <Q>1VLnPE9qWMXAIkYg7Y5w+jSNWAixuMBeKKIxx43VuwdrtRK7pRXaSYci/DZNe72XN8DHL6sbqpk93hnqx4h2hw==
    </Q>
    <DP>VIJ/qylv9N8UZGBH66Og3vJavE48iQFkIpIkUObkU6wuItRZS8ij7mc+3KW2ex+MdD7zXW00IEsMbtHLgHD/jQ==
    </DP>
    <DQ>S4Qtl4wFeaeHfJqWzYG/PNOdtaxePajbrEa+mIX9Q1g9KLyY8LfrrlvIZsBSbZuQDIyR9q37/UiCPj2ufzQvwQ==
    </DQ>
    <InverseQ>nrkYAY+YWALD4M39LfwdCWrtjVGYMUwMiebd3qQtirRfSBSvqPhhz1huKV7pZZHbrW+h3mxfZVZ/4WpaJ67GEA==
    </InverseQ>
    <D>kUSQXBnn62Slw0rd7k1Jgn8l4DX/Qfr3Hm8xKH4PnkT9xpBC79CWAf2cwxM/dCUmRrsjA772vVKINkvDUt0/mEXFZyYxg8FK1D1g9CdSoq6dPSxk/QXBYrsEPDo4Pe5gFdKTh4dqfnsBP0d6/7U4e2bAGg+3xn63w6CQ+JzCYmE=
    </D>
</RSAKeyValue>

Como puede ver, la clave privada incluye todo lo que está en la clave pública.

    
respondido por el John Wu 07.02.2017 - 20:36
fuente

Lea otras preguntas en las etiquetas