Использование OpenSSL означает "неспособность записать" случайное состояние "?
Я создаю самоподписанный SSL-сертификат для защиты раздела администрирования сервера, и я продолжаю получать это сообщение от OpenSSL:
невозможно записать "случайное состояние"
Что это значит?
Это на сервере Ubuntu. Я обновил libssl, чтобы исправить недавнюю уязвимость безопасности.
Ответы
Ответ 1
На практике наиболее распространенной причиной этого является то, что файл .rnd в вашем домашнем каталоге принадлежит root, а не вашей учетной записи. Быстрое исправление:
sudo rm ~/.rnd
Для получения дополнительной информации, здесь запись из Часто задаваемые вопросы OpenSSL:
Иногда служебная программа командной строки openssl не прерывается с сообщением об ошибке "PRNG not seeded", но жалуется, что она "не может записать" случайное состояние ". Это сообщение относится к файлу посева по умолчанию (см. Предыдущий ответ). Возможная причина заключается в том, что имя файла по умолчанию не известно, поскольку не установлено ни RANDFILE, ни HOME. (Версии до 0.9.6 использовали файл".rnd" в текущем каталоге в этом случае, но это изменилось с 0.9.6a.)
Итак, я бы проверял RANDFILE, HOME и разрешения для записи в эти места в файловой системе.
Если все, кажется, в порядке, вы можете попробовать запустить strace и посмотреть, что именно происходит.
Ответ 2
Я знаю, что этот вопрос касается Linux, но в Windows у меня была такая же проблема. Оказывается, вам нужно запустить командную строку в режиме "Запуск от имени администратора", чтобы она работала. В противном случае вы получите то же самое: невозможно записать ошибку "случайного состояния".
Ответ 3
Еще одна проблема на платформе Windows, убедитесь, что вы запускаете свою командную строку как административный пользователь!
Я не знаю, сколько раз это укусило меня...
Ответ 4
По-видимому, мне нужно было запустить OpenSSL как root, чтобы иметь разрешение на файл посева.
Ответ 5
У меня было то же самое на сервере Windows. Затем я понял, изменив vars.bat
, который:
set HOME=C:\Program Files (x86)\OpenVPN\easy-rsa
затем повторите с начала, и все будет хорошо.
Ответ 6
Проблема для меня заключалась в том, что у меня был .rnd в моем домашнем каталоге, но он принадлежал root. Удалив его и переиздав команду openssl, это исправлено.
Ответ 7
Вы должны установить переменную среды $ RANDFILE и/или создать файл $ HOME/.rnd. (FAQ по OpenSSL). (Конечно, у вас должны быть права на этот файл. Другие ответы здесь об этом. Но сначала у вас должен быть файл и ссылка на него.)
До версии 0.9.6 OpenSSL написал файл посева в текущем каталоге в файле ".rnd". В версии 0.9.6a у вас нет файла посева по умолчанию. OpenSSL 0.9.6b и более поздние будут вести себя аналогично 0.9.6a, но будут использовать по умолчанию значение "C: \" для HOME в системах Windows, если переменная окружения не была установлена.
Если файл посева по умолчанию не существует или слишком короткий, может возникнуть сообщение об ошибке "PRNG not seeded".
Переменная среды $ RANDFILE и $ HOME/.rnd используются только средствами командной строки OpenSSL. Приложения, использующие библиотеку OpenSSL, предоставляют свои собственные параметры конфигурации, чтобы указать источник энтропии, пожалуйста, ознакомьтесь с документацией, поступающей с приложением.