Как заставить OpenSSL написать RANDFILE в Windows Vista?

Когда я запускаю:

openssl genrsa -out mykey.key 2048

Я получаю следующую ошибку:

unable to write 'random state'
    e is 65537 (0x10001)

Мой googling предполагает, что это какая-то проблема с разрешениями Vista. Как разрешить Vista писать этот файл или как я могу настроить openssl, чтобы обойти его?

Ответ 1

Корневая проблема заключается в том, что переменная RANDFILE в файле конфигурации OpenSSL игнорируется в Windows. Это была долговременная проблема которая продолжает существовать с версии OpenSSL v1.0a, независимо от того, является ли целевая платформа Windows x86 или x64.

Однако есть восхитительно простое решение. Просто используйте регулярную переменную окружения var, чтобы установить значение RANDFILE, например

set RANDFILE=.rnd

Поскольку это значение является эфемерным, оно должно быть переиздано для каждого нового поля DOS или написано в командном файле.

Ответ 2

Я нашел это, что могло бы помочь: Использование OpenSSL, что "неспособно записать" случайное состояние" " значит?

также здесь: http://adamyoung.net/OpenSSL-unable-to-write-random-state

есть предложение http://www.mail-archive.com/[email protected]/msg51344.html о том, как заставить его работать в Vista.

найдите местоположение cmd.exe, щелкните правой кнопкой мыши и запустите как администратор

Ответ 3

У меня была одна и та же проблема, но для Windows 7. Легко разрешилось, я создал переменную System Environment Variable, названную HOME, и установил ее в каталог, в который мне нужен мой .rnd файл. Это решило проблему, потому что OpenSSL не знал, где мой .rnd был (потому что у меня его не было), и он не знал, куда его поместить, если он должен был его создать. Как только я установил переменную среды HOME с каталогом (c:\отлично!), Я переработал свое ключевое поколение в OpenSSL, и он сработал сразу. Чтобы проверить, я проверил ключ, который я создал, и у него был правильный контент. Я также проверил каталог, в который я установил свою переменную среды HOME, и вот и вот где-то сидел файл .rnd! Надеюсь, это поможет кому-то: -)

Ответ 4

Добавьте переменную HOME в переменные среды.

Ответ 5

Проблема в том, что в script отсутствуют некоторые права доступа или невозможно найти файл.

Решение:

Создайте системную переменную с именем RANDFILE и значением % USERPROFILE%.rnd

Обратите внимание на % USERPROFILE%, это системная переменная, которая автоматически вставляет путь к вашему профилю пользователя.