Ошибка реестра Easy-RSA в Windows: проверьте представление реестра
Это сообщение реестра — неудачный поиск инструментов, а не сломанный CA. Сравните представления 32 и 64 бит, прежде чем менять пакетный файл или PKI.
Пакетный файл останавливается с сообщением «Системе не удалось найти указанный раздел или значение реестра», и все считают, что центр сертификации сломан. Это не так, или по крайней мере пока не так: скрипт завершился ошибкой при поиске программного обеспечения, прежде чем попросить Easy-RSA что-либо сделать с ключом. Этот порядок важен, потому что означает: исправление — это проблема поиска, а PKI здесь лишь наблюдатель. Прочитать сбойную строку — это и есть весь диагноз, и это быстрее любого обходного пути.
Ошибка возникает до того, как CA будет затронут
Старые пакетные файлы Easy-RSA 2 находят OpenSSL или установку OpenVPN через запрос к реестру, а затем задают переменные по найденному. Если запрос ничего не возвращает, скрипт прерывается до выполнения любой операции с сертификатом.
Поэтому сообщение о ключе реестра — доказательство о среде скрипта, а не о каталоге CA.
Два представления реестра, один пакетный файл
32-битный и 64-битный процессы могут видеть разные представления реестра, и пакетный файл, исходящий из одного, может пропустить запись, которая есть в другом. Эти сравнения только для чтения показывают разницу для старого ключа, который используют некоторые старые скрипты:
reg query "HKLM\SOFTWARE\OpenVPN" /reg:32
reg query "HKLM\SOFTWARE\OpenVPN" /reg:64
Справка reg query описывает селекторы представления. Запустите обе команды в том же контексте, что и сбойный скрипт, потому что представление зависит от того, как запускается процесс, а также от флагов. Если запись есть только в одном представлении, сравните путь, на который она указывает, с установленными инструментами, прежде чем что-то менять. Ключ, который существует, но указывает на старый каталог установки, — это другая неисправность, чем отсутствующий ключ.
Если записи нет ни в одном представлении, установщик её не создавал, и созданная вручную запись не заставит инструменты работать.
Не добавляйте /reg:64 без условий
Соблазнительное исправление — добавить 64-битный селектор в каждый запрос и двигаться дальше. В некоторых установках это правильно, в других это отправляет скрипт в представление, где действительно ничего нет.
Меняйте поиск только после того, как увидите, в каком представлении находится ожидаемое значение.
Обнаружение — это не ремонт PKI
Эта ошибка не доказывает, что сертификат CA, ключ подписи, файл серийных номеров или база отзыва повреждены. Запуск clean-all, скопированного из старого руководства, уничтожит совершенно другой набор объектов, а поиск останется сломанным. Держите эти два занятия раздельно в голове и в заявке. Если позже операция с сертификатом не удастся, оценивайте её по её собственным доказательствам.
Сделайте резервную копию каталога CA перед любым экспериментом, даже если уверены, что он только для чтения.
Переход на Easy-RSA 3 — это миграция
Обслуживаемая установка должна использовать собственный загрузчик и модель конфигурации текущего пакета, и Easy-RSA 3 — это не тот же рабочий процесс с пакетными файлами, что и Easy-RSA 2. Его быстрый старт для нового PKI — не инструкция по миграции для существующего центра. Прежде чем менять версии, сохраните материал CA, а также записи выдачи и отзыва, и следуйте указаниям по обновлению этой версии. Инициализация заменяющего CA внутри авторитетного каталога, чтобы ошибка обнаружения инструментов исчезла, — худший вариант в списке.
Смена версии — это проект; ошибка реестра — это полдня.
Сравнение, которое действительно это решает
Запишите четыре вещи и сравните их напрямую:
- Какой скрипт запускался и какая строка отказала.
- Какое представление реестра запрашивала эта строка.
- Какой путь к исполняемому файлу ожидал скрипт.
- Какая установка на самом деле есть на машине.
Когда эти четыре совпадают, ошибка исчезает, и любую оставшуюся проблему с сертификатом можно читать по её собственным доказательствам, а не винить CA.