Не могу загрузить /root/.rnd в RNG: где его найти или как создать?

Не могу загрузить /root/.rnd в RNG: где его найти или как создать?

Я пытаюсь настроить VPN-сервер с OpenVPN на Ubuntu Server 18.04 и хочу использовать EasyRSA для создания своего PKI CA.

Итак, подключившись как root, я запускаю скрипты EasyRSA, которые я скопировал в /etc/openvpn/easy-rsa. Все отлично работает с ./clean-allи ./build-dh, но когда я пытаюсь запустить ./pkitool --initca, я получаю эту ошибку:

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

В файле конфигурации openssl ( /etc/openvpn/easy-rsa/openssl-1.0.0.cnf) я нахожу эту строку, которая указывает, почему он пытается связаться /root/.rnd:

RANDFILE    = $ENV::HOME/.rnd

Из того, что я прочитал и понял в интернете, .rndэто seed, который openssl использует для генерации случайных чисел. Странно то, что даже если я получаю эту ошибку, закрытый ключ RSA генерируется скриптом. Я просто боюсь, что он не является случайным, так как у него отсутствует seed.

Итак, моя проблема: этот файл не существует в моей системе, его нет в /root/, нет в /home/user/котором есть мой единственный другой пользователь, и find / -name ".rnd"ничего не возвращает. Даже find / -iname "*.rnd"ничего не возвращает.

И я даже не знаю, как это создать, или я все неправильно понял.

решение1

даже если я получаю эту ошибку, закрытый ключ RSA генерируется скриптом

Файл не обязательно должен существовать; OpenSSL создает его самостоятельно после первого раза.

Я просто боюсь, что это не случайно, поскольку в этом нет семени.

ОС предоставляет начальное число, используя свой собственный ГСЧ через /dev/urandomсистемные вызовы, такие как getentropy()или CryptGenRandom(). Вам не нужно предоставлять ничего дополнительного.

Я предполагаю, что .rndфайл является более или менее пережитком тех времен, когда ОС не имела хорошего CSPRNG, возможно, когда Linux /dev/urandomсчитался некачественным (и /dev/randomпроизводил данные очень медленно из-за «учета энтропии»). Теперь это уже не так, и полагаться полностью на seed, хранящийся в каком-то файле в вашем домашнем каталоге, на самом деле было быменьшебезопасный.

решение2

Создать один в ожидаемом пути

cd ~/; openssl rand -writerand .rnd

решение3

OpenSSL создаёт его самостоятельно после первого раза.

На самом деле, это не так, независимо от того, сколько раз я запускаю скрипт или пытаюсь использовать команду openssl randнапрямую, он никогда не создается.

Но вы были правы: я сгенерировал два ключа, чтобы проверить, отличаются ли они, и они оказались разными.

Спасибо за помощь.

решение4

Отметьте строку RANDFILE в /etc/ssl/openssl.conf более

Связанный контент