Estou tentando configurar um servidor VPN com OpenVPN, em um Ubuntu Server 18.04, e quero usar o EasyRSA para construir meu PKI CA.
Então, enquanto conectado como root, 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 confing openssl ( /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
), encontro esta linha que indica porque ele tenta alcançar /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 é que, 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/
, não /home/user/
está no meu único outro usuário e find / -name ".rnd"
não retorna nada. Mesmo find / -iname "*.rnd"
retorna nada.
E nem sei como posso criá-lo, ou se entendi tudo errado.
O arquivo não precisa existir; O OpenSSL o cria sozinho após a primeira vez.
O sistema operacional fornece a semente usando seu próprio RNG por
/dev/urandom
meio de chamadas de sistema comogetentropy()
ouCryptGenRandom()
. 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 em seu homedir seria realmente menos seguro.Crie um no caminho esperado
Na verdade, não, não importa quantas vezes eu inicie o script ou se eu apenas tentar usar o
openssl rand
comando diretamente, ele nunca será criado.Mas você estava certo: gerei duas chaves para verificar se eram diferentes e eram.
Obrigado pela ajuda.
Observe a linha RANDFILE em /etc/ssl/openssl.conf mais