Я пытаюсь настроить 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 более