Qué algoritmo de compendio usar para crear un par de claves pública / privada

3

Estoy generando un par de claves públicas / privadas en PHP con lo siguiente:

<?php
$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 4096,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
 );

// Create the private and public key
$res = openssl_pkey_new($config);

// Extract the private key from $res to $privKey
openssl_pkey_export($res, $privKey);

// Extract the public key from $res to $pubKey
$pubKey = openssl_pkey_get_details($res);
?>

Pero estoy dudando sobre qué elegir para la variable digest_alg . ¿Cuál es el 'mejor' para usar aquí? ¿Dónde puedo elegir? Y por último, pero no menos importante, ¿qué hace?

    
pregunta stUrb 17.01.2014 - 21:04
fuente

1 respuesta

6

digest_alg no es usado por openssl_pkey_new() sino por openssl_csr_new() : este último crea un par de clave pública / privada y envuelve la clave pública en una solicitud de certificado, que es autofirmada (con la clave privada recién generada). Esa firma implica el uso de una función hash, de ahí el parámetro.

openssl_pkey_new() no implica firma y, por lo tanto, no necesita un parámetro de "función hash".

Para openssl_csr_new() , sus opciones sensatas son entre SHA-256 (robusto, recomendado, eficiente) y SHA-1 (teóricamente menos robusto, ya no se recomienda, un poco más rápido y, lo que es más importante, se admite en todas partes). IE 8.0 en Windows XP (con todas las actualizaciones) es compatible con SHA-256 para certificados (lo probé ayer), por lo que me inclino a afirmar que SHA-256 ahora es lo suficientemente compatible como para que pueda recomendarse "de forma predeterminada".

    
respondido por el Thomas Pornin 17.01.2014 - 21:14
fuente

Lea otras preguntas en las etiquetas