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