Используя OpenSSL, что означает «невозможно написать« случайное состояние »»? - PullRequest
378 голосов
/ 18 сентября 2008

Я создаю самозаверяющий SSL-сертификат для защиты раздела администратора моего сервера и продолжаю получать это сообщение от OpenSSL:

невозможно написать «случайное состояние»

Что это значит?

Это на сервере Ubuntu. Я обновил libssl, чтобы исправить недавнюю уязвимость безопасности .

Ответы [ 7 ]

532 голосов
/ 18 сентября 2008

На практике наиболее распространенной причиной этого является то, что файл .rnd в вашем домашнем каталоге принадлежит пользователю root, а не вашей учетной записи. Быстрое исправление:

sudo rm ~/.rnd

Для получения дополнительной информации вот запись из FAQ по OpenSSL :

Иногда утилита командной строки openssl не прерывает работу с сообщением об ошибке «PRNG не заполнен», но жалуется, что «не может написать« случайное состояние »». Это сообщение относится к файлу заполнения по умолчанию (см. Предыдущий ответ). Возможная причина в том, что имя файла по умолчанию неизвестно, поскольку не заданы ни RANDFILE, ни HOME. (Версии до 0.9.6 использовали файл ".rnd" в текущем каталоге в этом случае, но это изменилось с 0.9.6a.)

Поэтому я бы проверил RANDFILE, HOME и разрешения для записи в эти места в файловой системе.

Если кажется, что все в порядке, вы можете попробовать запустить strace и посмотреть, что именно происходит.

246 голосов
/ 21 ноября 2011

Я знаю, что этот вопрос в Linux, но в Windows у меня была такая же проблема. Оказывается, вы должны запустить командную строку в режиме «Запуск от имени администратора», чтобы она работала. В противном случае вы получите то же самое: невозможно написать «случайное состояние», ошибка.

37 голосов
/ 25 апреля 2012

Еще одна проблема на платформе Windows: убедитесь, что вы запускаете командную строку от имени администратора!

Я не знаю, сколько раз это укусило меня ...

15 голосов
/ 18 сентября 2008

Очевидно, мне нужно было запустить OpenSSL от имени пользователя root, чтобы он имел права доступа к файлу заполнения.

12 голосов
/ 26 июня 2011

У меня было то же самое на сервере Windows. Тогда я понял, изменив vars.bat, который:

set HOME=C:\Program Files (x86)\OpenVPN\easy-rsa

затем повторите с начала и все должно быть в порядке.

6 голосов
/ 04 апреля 2011

Проблема для меня заключалась в том, что у меня был .rnd в моем домашнем каталоге, но он принадлежал пользователю root. Удаление и повторный ввод команды openssl исправили это.

2 голосов
/ 17 января 2018

Вы должны установить переменную среды $ 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 seded».

Переменная среды $ RANDFILE и $ HOME / .rnd используются только инструментами командной строки OpenSSL. Приложения, использующие библиотеку OpenSSL, предоставляют свои собственные параметры конфигурации для указания источника энтропии, пожалуйста, ознакомьтесь с документацией, прилагаемой к приложению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...