¿Por qué OpenSSL necesita la clave privada para revocar un certificado?

7
  

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

¿Qué hace esto que requiere la clave privada de la AC? ¿Hace algo más que actualizar index.txt?

    
pregunta Stian Fauskanger 04.07.2013 - 10:53
fuente

3 respuestas

11

Es un error de OpenSSL (al menos en la versión 1.0.1c); precisamente, un error de la línea de comandos "ca" manejo de opciones. Si observa el archivo fuente apps/ca.c en código fuente de OpenSSL , puede ver que la función MAIN() comienza analizando las opciones de la línea de comandos, luego lee el archivo de configuración, luego hace esto:

    /*****************************************************************/
    /* 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");

Lo que significa que el código reconocerá el caso especial de verificación del estado de revocación de un certificado (opción de línea de comando -status ), que por supuesto no necesita la clave privada de CA, pero de lo contrario, insistirá al cargar la clave privada de la AC, si será realmente necesaria o no.

En particular, revocar un certificado, en el contexto de esta herramienta, significa marcarlo como revocado en la "base de datos" index.txt del certificado emitido, que no utiliza la clave privada de CA. Lo que utiliza la clave privada de la CA es firmar la CRL (que informa al resto del mundo de que el certificado realmente se ha revocado), pero la opción de línea de comando -revoke no activa eso (es la opción -gencrl lo que implica la emisión de una nueva CRL).

Resumen: " openssl ca -revoke " implica leer la clave privada de CA sin ninguna razón. Siéntase libre de parchar la herramienta desde su código fuente y posiblemente enviar el parche a los mantenedores de OpenSSL.

    
respondido por el Tom Leek 04.07.2013 - 15:36
fuente
4

La clave privada de la CA es necesaria porque la revocación debe estar firmada por la CA. De lo contrario, es posible que la revocación sea realizada por cualquier entidad.

    
respondido por el Uwe Plonus 04.07.2013 - 11:36
fuente
2

Uwe Plonus tiene razón. La CA siempre proporciona una lista de revocación ( CRL ) en la que todos los certificados revocados se enumeran por su número de serie y otra información como la fecha y hora en que se revocó un crt.

Consulte enlace para obtener más información.

    
respondido por el Gannic 04.07.2013 - 14:54
fuente

Lea otras preguntas en las etiquetas