Запит ключа OpenVPN після OpenSSL 3: перевірте провайдера
Раптовий запит парольної фрази до закритого ключа часто є наслідком зміни провайдера, а не нового пароля. Огляньте ключ, випробуйте обидва набори провайдерів і збережіть парольну фразу.
Ніхто не торкався профілю, але той самий клієнт тепер при кожному запуску вимагає парольну фразу для закритого ключа. Коли ця зміна з’являється протягом кількох днів після оновлення дистрибутива, ймовірна причина — саме оновлення: OpenSSL 3 перебудував підтримку алгоритмів, і ключ, який стара бібліотека читала без проблем, може стати нечитабельним без зміни хоча б одного байта. Виконуйте перевірки по порядку, бо дві з них виглядають однаково, якщо дивитися лише на запит.
Перше питання — чи зашифровано ключ, друге — чи може ця збірка його розшифрувати. Зміни конфігурації мають сенс лише після того, як відомі обидві відповіді.
Перевірте, чи зашифровано ключ
Прочитайте перший рядок файлу і потім дайте бібліотеці його розібрати, бо назва файлу нічого не доводить. Блок PEM з міткою ENCRYPTED PRIVATE KEY — це зашифрований PKCS#8, а старіший RSA PRIVATE KEY блок із Proc-Type: 4,ENCRYPTED — традиційна форма, і обидва очікують парольну фразу. Незашифрований PRIVATE KEY блок взагалі не повинен її вимагати. Запускайте розбір від того облікового запису, якому належить файл, бо проблема з правами дає іншу й куди менш цікаву помилку.
Якщо ключ справді не зашифрований, а клієнт усе одно питає, перестаньте дивитися на криптографію і перевірте, чи не вказує профіль файл askpass, який служба ще може прочитати.
Перевірте, чи може ця збірка його розшифрувати
OpenSSL 3 розділив підтримку алгоритмів на провайдери, і набір старих шифрів тепер міститься в legacy-провайдері, а не в стандартному. Ключ, зашифрований одним із цих шифрів, залишається чинним, але бібліотека, завантажена без legacy-провайдера, не може його декодувати. У одних клієнтів це виявляється повторюваним запитом, у інших — жорстким збоєм одразу після парольної фрази.
Розберіть той самий ключ двічі тим самим бінарником: спочатку лише зі стандартним провайдером, потім з legacy і стандартним, запитаними разом у командному рядку. Якщо друга спроба вдається там, де перша не вдалася, діагноз спирається на докази, а не на час оновлення. Якщо обидві зазнають невдачі однаково, парольна фраза неправильна або файл пошкоджено, і жодне налаштування провайдера не виправляє ні того, ні іншого.
Перевірте найвужче доступне виправлення
Віддавайте перевагу зміні, обмеженій клієнтом, а не системній. Деякі збірки 2.6 приймають опцію профілю, яка завантажує обидва провайдери для процесу цього демона, тож звірте директиву з посібником для вашої точної версії, перш ніж покладатися на неї; редагування системного openssl.cnf натомість зачіпає кожну програму OpenSSL на хості. Вужче налаштування також значно легше скасувати після перекодування ключа.
Не видаляйте парольну фразу, щоб запит зник. Це перетворює захищені облікові дані на файл відкритого тексту й непомітно змінює ризик кожної резервної копії, копії та пакета підтримки, у яких він з’являється. Важлива різниця — між ключем, якому потрібна його парольна фраза, і ключем, який ця бібліотека не може декодувати.
Перевірте контекст служби, потім перекодуйте
Щойно ключ можна буде розблокувати, перешифруйте його актуальним алгоритмом щоб залежність зникла. Запишіть новий файл сучасним шифром, переконайтеся, що він розбирається, оновіть профіль і тримайте стару копію лише до першого успішного з’єднання. Ніколи не вміщуйте парольну фразу в командний рядок, де будь-який локальний користувач може прочитати її зі списку процесів. Видаляйте старий файл лише після того, як новий підключиться з облікового запису служби, а не лише з вашої оболонки.
Потім перевірте модуль, який насправді запускає клієнт. Ключ, читабельний у вашій оболонці, може бути недоступним службі, що працює під іншим обліковим записом або з посиленою настановою домашнього каталогу.
Запишіть налаштування провайдера поряд із профілем і тримайте при ньому тест із двох команд. Коли пізніше оновлення прибере legacy-провайдер, запустіть цей тест ще раз, щоб побачити, чи потрібен він ключу досі або профіль можна вивести з цього обхідного рішення.
Запит — це симптом із щонайменше трьома причинами, і лише одна з них — відсутня парольна фраза.