Chiarimento necessario per il processo di firma CSR

3

Non sembrano esserci molte informazioni approfondite sul processo di firma del certificato diverse da:

Ecco un esempio di CSR che ho creato:

-----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-----

Ho incollato quanto sopra in certlogik.com e ho esaminato l'output.

Se ho capito bene, 4 componenti costituiranno CertificationRequestInfo :

  1. Versione
  2. Soggetto
  3. Informazioni chiave pubblica
  4. Attributi

Suppongo che utilizzando SHA1 o SHA2, il CertificationRequestInfo sia quindi sottoposto a hash e che l'output dell'hash sia crittografato utilizzando la chiave privata del computer che sta creando il CSR.

Quando arriva alla CA, la CA prende CertificationRequestInfo e esegue un hash su di essa. Quindi prende anche il valore crittografato e prova a decodificarlo utilizzando la chiave pubblica nel CSR. Se l'output dell'hash e l'output dell'hash decrittografati corrispondono, la CA firmerà il CSR.

Per favore correggimi se ho torto con quanto sopra. A questo punto sono confuso riguardo a quali dati la CA effettivamente segni (quali dati l'hash della CA e quindi crittografa quell'hash).

    
posta Daniel 24.02.2015 - 23:38
fonte

1 risposta

3

La CSR è verificata per la validità. Se è valido, la vecchia firma viene eliminata e viene creato un nuovo certificato.

Gli ingredienti per il nuovo certificato sono i seguenti:

  • Informazioni dal CSR (più alcuni campi aggiunti / modificati / rimossi. Qualunque sia la tua CA è la migliore.)
  • Tipicamente alcuni vincoli di base (come la dichiarazione: "Quello che sto firmando qui è (o non è) supposto essere una CA stessa.")
  • Informazioni su chi sta firmando.
  • E poi la firma stessa.

Tutti i pezzi che devono essere firmati costituiscono un set. Questo set si chiama "TBSCertificate".
E TBSCertificate + parti della firma costituiscono ciò che viene chiamato "Certificato".

RFC 5280 si interrompe in questo modo:

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
    }

C'è un eccellente post sul blog che approfondisce ciò che è e ciò che non è in realtà all'interno di un certificato: Morgan Simonsen, 2013-04-16, Capire le impronte digitali dei certificati digitali X.509 ( Archiviato qui )

    
risposta data 25.02.2015 - 11:31
fonte