На практике наиболее распространенной причиной этого является то, что файл .rnd в вашем домашнем каталоге принадлежит пользователю root, а не вашей учетной записи. Быстрое решение:
sudo rm ~/.rnd
Для получения дополнительной информации, вот запись из OpenSSL FAQ :
Иногда утилита командной строки openssl не прерывает работу с сообщением об ошибке «PRNG not seded», но жалуется, что «не может написать« случайное состояние »». Это сообщение относится к файлу заполнения по умолчанию (см. Предыдущий ответ). Возможная причина в том, что имя файла по умолчанию неизвестно, поскольку не заданы ни RANDFILE, ни HOME. (Версии до 0.9.6 использовали файл ".rnd" в текущем каталоге в этом случае, но это изменилось с 0.9.6a.)
Поэтому я бы проверил RANDFILE, HOME и разрешения на запись в эти места в файловой системе.
Если кажется, что все в порядке, вы можете попробовать запустить strace и посмотреть, что именно происходит.
sudo chown user:user ~/.rnd
заставил все получиться.sudo
, и это сработало. Но почему у меня все еще есть.rnd
каталог, помеченный root в моем $ HOME после создания самозаверяющего сертификата?/var/www/.rnd
и ограничив егоwww-data
. (Предполагая, что/var/www
этоwww-data
домашняя папка, которая есть на большинстве систем. Вы можете проверитьwww-data
домашнюю папку с нейcat /etc/passwd | grep www-data
)Я знаю, что этот вопрос в Linux, но в Windows у меня была такая же проблема. Оказывается, вы должны запустить командную строку в режиме «Запуск от имени администратора», чтобы она работала. В противном случае вы получите то же самое: невозможно написать ошибку «случайное состояние».
источник
set RANDFILE=.rnd
перед выполнениемopenssl
.$env:RANDFILE=".rnd"
скорее чемset RANDFILE=.rnd
.Еще одна проблема на платформе Windows: убедитесь, что вы запускаете командную строку от имени администратора!
Я не знаю, сколько раз это укусило меня ...
источник
Очевидно, мне нужно было запустить OpenSSL от имени пользователя root, чтобы у него были права доступа к файлу заполнения.
источник
У меня было то же самое на сервере Windows. Затем я понял, изменив
vars.bat
что:затем повторите с начала и все должно быть хорошо.
источник
set HOME=.
Проблема для меня заключалась в том, что у меня был .rnd в моем домашнем каталоге, но он принадлежал пользователю root. Удаление и повторный ввод команды openssl исправили это.
источник
Вам следует установить переменную среды $ RANDFILE и / или создать файл $ HOME / .rnd. ( OpenSSL FAQ ). (Конечно, у вас должны быть права на этот файл. Другие ответы здесь об этом. Но сначала у вас должен быть файл и ссылка на него.)
До версии 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, предоставляют свои собственные параметры конфигурации для указания источника энтропии, пожалуйста, ознакомьтесь с документацией, прилагаемой к приложению.
источник
Сегодня я столкнулся с этой проблемой на AWS Lambda. Я создал переменную окружения RANDFILE = /tmp/.random
Это добилось цели.
источник