Não é possível carregar /root/.rnd no RNG: onde posso encontrá-lo ou como criá-lo?

Não é possível carregar /root/.rnd no RNG: onde posso encontrá-lo ou como criá-lo?

Estou tentando configurar um servidor VPN com OpenVPN, em um Ubuntu Server 18.04, e quero usar EasyRSA para construir minha CA PKI.

Então, enquanto estiver conectado como root, eu inicio os scripts EasyRSA que copiei para /etc/openvpn/easy-rsa. Tudo funciona bem com ./clean-alle ./build-dh, mas quando tento iniciar ./pkitool --initca, recebo este erro:

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

No arquivo de configuração do openssl ( /etc/openvpn/easy-rsa/openssl-1.0.0.cnf), encontro esta linha que indica por que ele tenta acessar /root/.rnd:

RANDFILE    = $ENV::HOME/.rnd

Pelo que li e entendi online, .rndé uma semente que o openssl usa para gerar números aleatórios. O estranho é: embora eu receba esse erro, a chave privada RSA É gerada pelo script. Só temo que não seja aleatório, pois falta uma semente.

Então meu problema é: esse arquivo não existe no meu sistema, não está no /root/qual /home/user/é meu único outro usuário e find / -name ".rnd"não retorna nada. Even find / -iname "*.rnd"não retorna nada.

E nem sei como posso criá-lo, ou se entendi tudo errado.

Responder1

mesmo que eu receba esse erro, a chave privada RSA É gerada pelo script

O arquivo não precisa existir; O OpenSSL o cria sozinho após a primeira vez.

Só temo que não seja aleatório, pois falta uma semente.

O sistema operacional fornece a semente usando seu próprio RNG por meio /dev/urandomde chamadas de sistema como getentropy()ou CryptGenRandom(). Não há necessidade de você fornecer nada extra.

Eu acho que o .rndarquivo é mais ou menos uma sobra dos dias em que o sistema operacional não tinha um bom CSPRNG, possivelmente quando o Linux /dev/urandomera considerado de baixa qualidade (e /dev/randomproduzia dados muito lentamente devido à "contabilidade de entropia"). Agora não é mais o caso, e confiar inteiramente em uma semente armazenada em algum arquivo no seu homedir seria na verdademenosseguro.

Responder2

Crie um no caminho esperado

cd ~/; openssl rand -writerand .rnd

Responder3

O OpenSSL o cria sozinho após a primeira vez.

Na verdade, isso não acontece, não importa quantas vezes eu inicie o script ou se apenas tente usar o openssl randcomando diretamente, ele nunca é criado.

Mas você estava certo: gerei duas chaves para verificar se eram diferentes e eram.

Obrigado pela ajuda.

Responder4

Observe a linha RANDFILE em /etc/ssl/openssl.conf mais

informação relacionada