Es necesario aclarar el proceso de firma de CSR

3

No parece haber mucha información en profundidad sobre el proceso de firma de certificados que no sea:

Aquí hay un ejemplo de CSR que creé:

-----BEGIN CERTIFICATE REQUEST-----
MIIC3zCCAccCAQAwaTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRQwEgYDVQQH
EwtMb3MgQW5nZWxlczEQMA4GA1UEChMHRXhhbXBsZTELMAkGA1UECxMCQ0ExGDAW
BgNVBAMTD2Nzci5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALsbtWr46Mx8Loal+tKuAFzKHDmzBNr1DG1XlKuO32oVekJW8rkSXdIt
i90g2Bpl9yS8ndFt9djI+Jx0YZp2BnErAbriX7PXXLY13tj3OmO0f8JEAv/5HOaL
qYl79Mr03prhjyTZrlxSPsFuuXfy+arErNet7sqkOua7iexpC6Vx0CTL/YGjzEG3
PA3zAdqKMWnHruSzyAExf/NocLTJ8OdvvAIh2MP79ga8MRtXdM/nEIs6xgnd9B1c
I2mkS0gK7yFCKISZpeSusLJB9SplaOLiH0FBAzslek5WkMVs4AiEahieOMOFtyYR
8v3rKSNvSQW0y29M71AjQq9CA69VrVUCAwEAAaAxMC8GCSqGSIb3DQEJDjEiMCAw
CQYDVR0TBAIwADATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQUFAAOC
AQEAGRIzq4nE7KhNZ5vt85gfw6BLM887G/W2A679cXzH7nSjL0Hmr7dii891ak8v
AzgwLKYn6sRBA+cN1bidExcb49v8G7TMOIBxhZjlEewgouBRBZMtNxSJFhD7TSrr
uj7r/tudnztqIjfYL9cXo+MuoGHsGJcXoBSQBIE8jheEUdaAA2LFVaLL+3lQgylL
14iCuY6DR1bF51lZP0zSqdba+mFvAVpspZfcrVClYqsf/xfkiHH7Rx1pz4sDCKTt
WV/7YHDxGXwIjIxkhEwuMX+zz3rO++jy+iBTXnFVwfPogcbLDmcFM/j4JPxuVz4a
nx5Y3pWKymuKNQ58BAguzF+tmA==
-----END CERTIFICATE REQUEST-----

Pegué lo anterior en certlogik.com y eché un vistazo a la salida.

Si lo comprendo correctamente, 4 componentes formarán CertificationRequestInfo :

  1. Versión
  2. Asunto
  3. Información de clave pública
  4. Atributos

Supongo que al usar SHA1 o SHA2, el CertificationRequestInfo se revisa y la salida de hash se cifra mediante la clave privada de la computadora que está creando el CSR.

Cuando llega a la CA, la CA toma el CertificationRequestInfo y ejecuta un hash en él. Luego, también toma el valor cifrado e intenta descifrarlo utilizando la clave pública en el CSR. Si la salida de hash y la salida de hash descifrada coinciden, la CA firmará el CSR.

Por favor corríjame si me equivoco con lo anterior. En este punto, estoy confundido con respecto a qué datos firma realmente la CA (qué datos la CA hace un hash y luego los encripta).

    
pregunta Daniel 24.02.2015 - 23:38
fuente

1 respuesta

3

Se comprueba la validez de la CSR. Si es válido, entonces la firma anterior se elimina y se crea un nuevo certificado.

Los ingredientes para el nuevo certificado son los siguientes:

  • Información de CSR (más algunos campos agregados / modificados / eliminados. Lo que su CA considere que es lo mejor).
  • Por lo general, algunas restricciones básicas (como la declaración: "Lo que estoy firmando aquí es (o no) se supone que es una CA.")
  • Información sobre quién está firmando.
  • Y luego la firma misma.

Todas las piezas que deben firmarse forman un conjunto. Este conjunto se llama "TBSCertificate".
Y las partes de firma TBSCertificate + conforman lo que entonces se llama "Certificado".

RFC 5280 lo desglosa de la siguiente manera:

Certificate  ::=  SEQUENCE  {
    tbsCertificate       TBSCertificate,
    signatureAlgorithm   AlgorithmIdentifier,
    signatureValue       BIT STRING  }

TBSCertificate  ::=  SEQUENCE  {
    version         [0]  EXPLICIT Version DEFAULT v1,
    serialNumber         CertificateSerialNumber,
    signature            AlgorithmIdentifier,
    issuer               Name,
    validity             Validity,
    subject              Name,
    subjectPublicKeyInfo SubjectPublicKeyInfo,
    issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                         -- If present, version MUST be v2 or v3

    subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                         -- If present, version MUST be v2 or v3
    extensions      [3]  EXPLICIT Extensions OPTIONAL
                         -- If present, version MUST be v3
    }

Hay una excelente publicación en el blog que profundiza sobre qué es y qué no está realmente dentro de un certificado: Morgan Simonsen, 2013-04-16, Entendiendo las huellas digitales del certificado digital X.509 ( Archivado aquí )

    
respondido por el StackzOfZtuff 25.02.2015 - 11:31
fuente

Lea otras preguntas en las etiquetas