Perché OpenSSL necessita della chiave privata per revocare un certificato?

7

openssl ca -revoke signed/0A.pem -config caconfig.cnf

Che cosa fa questo che richiede la chiave privata della CA? Fa qualcosa tranne l'aggiornamento index.txt?

    
posta Stian Fauskanger 04.07.2013 - 10:53
fonte

3 risposte

11

È un bug di OpenSSL (almeno nella versione 1.0.1c); precisamente, un bug della gestione delle opzioni della riga di comando "ca". Se guardi il file sorgente apps/ca.c nel codice sorgente OpenSSL , potresti notare che la funzione MAIN() inizia con l'analisi le opzioni della riga di comando, quindi legge il file di configurazione, quindi esegue questa operazione:

    /*****************************************************************/
    /* report status of cert with serial number given on command line */
    if (ser_status)
    {
         /* some stuff */
         goto err;
    }

    /*****************************************************************/
    /* we definitely need a private key, so let's get it */

    if ((keyfile == NULL) && ((keyfile=NCONF_get_string(conf,
            section,ENV_PRIVATE_KEY)) == NULL))
            {
            lookup_fail(section,ENV_PRIVATE_KEY);
            goto err;
            }
    if (!key)
            {
            free_key = 1;
            if (!app_passwd(bio_err, passargin, NULL, &key, NULL))
                    {
                    BIO_printf(bio_err,"Error getting password\n");
                    goto err;
                    }
            }
    pkey = load_key(bio_err, keyfile, keyform, 0, key, e,
            "CA private key");

Ciò significa che il codice riconoscerà il caso speciale di verifica dello stato di revoca di un certificato (opzione riga di comando -status ), che ovviamente non ha bisogno della chiave privata CA, ma altrimenti insisterà sul caricamento della chiave privata CA, se sarà effettivamente necessaria o meno.

In particolare, revocare un certificato, nel contesto di questo strumento, significa contrassegnarlo come revocato nel "database" index.txt del certificato emesso, che non utilizza la chiave privata CA. Ciò che utilizza la chiave privata CA è la firma del CRL (che informa il resto del mondo che il certificato è realmente revocato), ma l'opzione della riga di comando -revoke non lo attiva (è l'opzione -gencrl che implica l'emissione di un nuovo CRL).

Riepilogo: " openssl ca -revoke " implica la lettura della chiave privata CA senza alcun motivo valido. Sentiti libero di applicare lo strumento al suo codice sorgente ed eventualmente di inviare la patch ai manutentori di OpenSSL.

    
risposta data 04.07.2013 - 15:36
fonte
4

La chiave privata della CA è necessaria perché la revoca deve essere firmata dalla CA. Altrimenti sarebbe possibile che la revoca sia fatta da qualsiasi entità.

    
risposta data 04.07.2013 - 11:36
fonte
2

Uwe Plonus ha ragione. La CA fornisce sempre un elenco di revoche ( CRL ) in cui tutti i certificati revocati sono elencati in base al loro numero di serie e altre informazioni come il datetime quando un crt è stato revocato.

Vedi link per ulteriori informazioni.

    
risposta data 04.07.2013 - 14:54
fonte

Leggi altre domande sui tag