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-all
y ./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, .rnd
es 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/urandom
través de llamadas al sistema como getentropy()
o CryptGenRandom()
. No es necesario que proporciones nada adicional.
Supongo que el .rnd
archivo 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/urandom
se consideraba de mala calidad (y /dev/random
producí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 rand
comando 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