Используя OpenSSL, что означает “невозможно записать "случайное состояние"”?

StackOverflow https://stackoverflow.com/questions/94445

  •  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, предоставляют свои собственные параметры конфигурации для указания источника энтропии, пожалуйста, ознакомьтесь с документацией, прилагаемой к приложению.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top