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-all
e ./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/urandom
de chamadas de sistema como getentropy()
ou CryptGenRandom()
. Não há necessidade de você fornecer nada extra.
Eu acho que o .rnd
arquivo é mais ou menos uma sobra dos dias em que o sistema operacional não tinha um bom CSPRNG, possivelmente quando o Linux /dev/urandom
era considerado de baixa qualidade (e /dev/random
produzia 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 rand
comando 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