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

Похожие статьи