Le autorità di certificazione sono obbligate ad obbedire all'algoritmo della firma (hashing) specificato nel CSR?

14

Stavo giocando un po 'con gli algoritmi delle firme, cercando di determinare quali CA tra quelle che uso stanno attualmente emettendo certificati SHA2.

Ho generato un CSR che specifica l'hash SHA256 (utilizzando gnutls-certtool con hash param e openssl req con -sha256 param) e il CSR mostra chiaramente sha256WithRSAEncryption come algoritmo di firma.

$ openssl req -noout -text -in test.csr

Certificate Request:
    ...
    Signature Algorithm: sha256WithRSAEncryption
        ...

Tuttavia, il certificato risultante dalla CA è stato sottoposto a hash con sha1WithRSAEncryption .

$ openssl x509 -noout -text -in test.crt

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: ... (...)
        Signature Algorithm: sha1WithRSAEncryption

Ovviamente, generando un CSR con --hash SHA1 (% hash disha1WithRSAEncryption) il certificato risultante utilizzerà sha1WithRSAEncryption (come previsto).

La CA afferma che l'hash deve essere specificato come parte dell'ordine, non del CSR (che è qualcosa che non posso fare in ogni caso dato che sto inoltrando l'ordine tramite un servizio di terze parti).

Di qui la domanda. La CA deve obbedire all'algoritmo hash specificato nel CSR?

    
posta Simone Carletti 11.09.2014 - 00:23
fonte

2 risposte

14

L'algoritmo della firma specificato durante la creazione della CSR corrisponde al digest del messaggio utilizzato per firmare la richiesta stessa , non è inteso a chiedere alla CA di preferire quell'algoritmo quando firma il certificato.

Il DM utilizzato nella CSR stabilisce il livello di confidenza nella tua richiesta, ma non implica quale algoritmo viene utilizzato sul certificato poiché la firma non dipende da quel digest ma dalla chiave pubblica.

La maggior parte della CA si attiene allo stesso algoritmo per uno specifico certificato di emissione, a meno che non venga scoperto che è "debole", ignorando quale digest di messaggi è stato utilizzato nella richiesta.

Una buona CA rifiuterebbe qualsiasi CSR firmata con MD5 (per precauzione poiché non dovrebbero fidarsi di te) e dovrebbe costringerti a usare SHA256 per qualsiasi certificato che usi per più di due anni a partire da oggi (2014) , dal momento che Microsoft (e forse altri) rifiuterà i certificati firmati con SHA-1 o inferiore a gennaio 2017.

    
risposta data 11.09.2014 - 19:06
fonte
1

Dalla mia esperienza, le CA hanno le proprie impostazioni e spesso non sono disposte (o non sono in grado affatto, perché sono cablate nel loro software) per modificare qualsiasi cosa al suo interno. Sto parlando di campi Oggetto obbligatori, utilizzo delle chiavi, utilizzo di chiavi estese, ...

Ad esempio, si desidera avere L, ST, C nell'oggetto, ma CA verrà disattivato e si otterrà il certificato solo con C = contea. Oppure invii un semplice .csr e ottieni un certificato con usi speciali per le chiavi estese, come Autenticazione client (1.3.6.1.5.5.7.3.2) e Autenticazione server (1.3.6.1.5.5.7.3.1). E molte volte ottieni anche SAN uguale a CN, gratuitamente.

Se si desidera che il certificato sia firmato con sha1 o sha256, è necessario chiedere all'autorità di registrazione RA =. RA invia la richiesta effettiva alla CA e può configurare le impostazioni, incluso l'algoritmo di hashing utilizzato.

Le CA utilizzano la firma nel file .csr solo per verificare che tu sia il proprietario della chiave privata, nient'altro.

    
risposta data 18.02.2015 - 13:34
fonte

Leggi altre domande sui tag