No puedo cargar /root/.rnd en RNG: ¿dónde puedo encontrarlo o cómo crearlo?

No puedo cargar /root/.rnd en RNG: ¿dónde puedo encontrarlo o cómo crearlo?

Estoy intentando configurar un servidor VPN con OpenVPN, en un servidor Ubuntu 18.04, y quiero usar EasyRSA para construir mi CA PKI.

Entonces, mientras estoy conectado como root, ejecuto los scripts de EasyRSA que copié en /etc/openvpn/easy-rsa. Todo funciona bien con ./clean-ally ./build-dh, pero cuando intento iniciarlo ./pkitool --initca, aparece este error:

Can't load /root/.rnd into RNG
140171234709952:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd

En el archivo de configuración de openssl ( /etc/openvpn/easy-rsa/openssl-1.0.0.cnf), encuentro esta línea que indica por qué intenta alcanzar /root/.rnd:

RANDFILE    = $ENV::HOME/.rnd

Por lo que leí y entendí en línea, .rndes una semilla que openssl usa para generar números aleatorios. Lo extraño es que, aunque recibo este error, el script genera la clave privada RSA. Sólo me temo que no es aleatorio, ya que le falta semilla.

Entonces mi problema es: este archivo no existe en mi sistema, no está en /root/, no en /home/user/cuál es mi único otro usuario, y find / -name ".rnd"no devuelve nada. Incluso find / -iname "*.rnd"no devuelve nada.

Y ni siquiera sé cómo puedo crearlo, o si entendí todo esto mal.

Respuesta1

aunque recibo este error, la clave privada RSA ES generada por el script

No es necesario que el archivo exista; OpenSSL lo crea solo después de la primera vez.

Sólo me temo que no es aleatorio, ya que le falta semilla.

El sistema operativo proporciona la semilla utilizando su propio RNG a /dev/urandomtravés de llamadas al sistema como getentropy()o CryptGenRandom(). No es necesario que proporciones nada adicional.

Supongo que el .rndarchivo es más o menos un vestigio de los días en que el sistema operativo carecía de un buen CSPRNG, posiblemente cuando Linux /dev/urandomse consideraba de mala calidad (y /dev/randomproducía datos muy lentamente debido a la "contabilidad de entropía"). Ahora ya no es el caso, y depender completamente de una semilla almacenada en algún archivo en su directorio de inicio sería en realidadmenosseguro.

Respuesta2

Crea uno en la ruta esperada

cd ~/; openssl rand -writerand .rnd

Respuesta3

OpenSSL lo crea solo después de la primera vez.

En realidad, no es así, no importa cuántas veces inicie el script o si simplemente intento usar el openssl randcomando directamente, nunca se crea.

Pero tenías razón: generé dos claves para comprobar si eran diferentes y lo eran.

Gracias por su ayuda.

Respuesta4

Observe la línea RANDFILE en /etc/ssl/openssl.conf más

información relacionada