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