Два питання вирішують, де місце закритому ключу VPN: чи можна скопіювати матеріал ключа з хоста і чи може процес використовувати його без людини за клавіатурою. Маркетингова етикетка сховища не відповідає на жодне з них. Демону тунелю, який має піднятися після перезавантаження, потрібна робота без супроводу, а це виключає все, що прив'язане до PIN, який вводить людина.

Виберіть між копіюванням і використанням

Копіювання й використання відмовляють по-різному, тому розглядайте їх як дві вимоги, а не одну. Зловмисник, який може прочитати байти ключа, забирає ідентичність на інший хост, і початкова машина цього не помічає. Зловмисник, який не може прочитати байти, але має доступ до процесу підпису, продовжує автентифікуватися, поки триває цей доступ.

Ключ у файлі тривіально копіюється, тому його ж найлегше зберегти й відновити. Програмне сховище ключів змінює API, а не межу: постачальник відмовляє у власних викликах експорту, але той самий адміністративний контекст, який встановив ключ, зазвичай має інші шляхи до матеріалу. Неекспортований у програмного постачальника — це твердження про підтримувані операції, а не доказ апаратної стіни. Сприймайте це як обмежувач проти випадкового копіювання, а не як захист від того, у кого вже є ваша сесія.

TPM або смарт-карта виконує операцію підпису всередині апаратного забезпечення й повертає лише результат. Це закриває шлях копіювання, залишаючи шлях використання відкритим для всього, що може запросити підпис.

Узгодьте сховище з демоном тунелю

Демон обмежує це сильніше, ніж політика безпеки. WireGuard бере закритий ключ у base64 з файлу або з вводу wg set і не має шляху до сховища сертифікатів, тому ключ інтерфейсу з підтримкою TPM не розглядається. OpenVPN, зібраний проти OpenSSL 3, може завантажити ключ через URI постачальника, а strongSwan постачає плагін TPM разом із підтримкою PKCS#11, але обидва залежать від того, як зібрано ваш пакет.

Демон, який не може дістатися до вибраного сховища, перетворює апаратну межу на декорацію. Хтось один раз експортує ключ, залишає його у файлі, і решта проєкту тихо працює на цій копії.

Оновлення — друга половина відповідності, і саме тут розвалюється більшість проєктів. Сховище, яке працює при першій реєстрації, але вимагає входу в консоль при кожному перевипуску, обходять першого разу, коли сертифікат спливає в незручну годину. Перевірте шлях перевипуску, поки в поточного ключа ще є місяці.

Інвентаризуйте ключ до перенесення

Зафіксуйте, що це за ключ, перш ніж змінювати місце його зберігання, бо міграція, яка втратила subject alternative names, ламає тунель так, що це читається як помилка маршрутизації. Вивантажте сертифікат, переконайтеся, що закритий ключ читається там, де його чекає демон, і перевірте, що пара справді збігається.

openssl x509 -in vpn.crt -noout -subject -ext subjectAltName
openssl pkey -in vpn.key -check -noout
openssl x509 -in vpn.crt -noout -pubkey | openssl sha256
openssl pkey -in vpn.key -pubout | openssl sha256

Останні два дайджести мають бути однаковими. Якщо ні, демон завершує налаштування, а потім зазнає невдачі при кожній спробі з помилкою сертифіката або підпису, яка не вказує нікуди поблизу справжньої причини. Еквівалент для WireGuard коротший, бо відкритий ключ виводиться прямо із закритого: wg pubkey < /etc/wireguard/wg0.key має вивести ключ піра, який ваш сервер уже зберіг.

Права доступу належать до тієї ж інвентаризації. stat -c '%a %U:%G' /etc/wireguard/wg0.key має повернути 600 root:root, а все, що читається групою або світом, означає, що ключ уже був доступний процесам, яких ви не задумували.

Перевірте сховище і шлях використання

Перевірка має три частини, і третю зазвичай пропускають. Підтвердьте, що ключ є у вибраному сховищі, підтвердьте, що демон завантажив саме цей ключ, а не залишену копію, і потім підтвердьте, що він усе ще запускається, коли артефакт експорту прибрано.

certutil -store -user My
certutil -csp "Microsoft Platform Crypto Provider" -key -user
certutil -verifykeys -user My
ipsec listcerts

У Windows перша команда перелічує особисте сховище і друкує постачальника ключа поруч із кожним записом, і там з'являється сертифікат, який виглядає апаратно захищеним, але лежить у програмному постачальнику. Друга перелічує ключі, якими володіє платформний криптопостачальник, тому ідентичність VPN, відсутня там при наявному сертифікаті, означає, що закрита половина живе деінде. На шлюзі Linux ipsec listcerts повідомляє, що завантажив strongSwan, включно з ключами з плагіна TPM. Порівнюйте відбитки або хеші відкритих ключів з інвентаризацією, а не довіряйте кількості записів.

Негативний тест — той, що доводить проєкт. Перемістіть експортований ключ з каталогу конфігурації демона, перезапустіть службу і прочитайте в журналі, яку ідентичність вона пред'являє. Тунель, який усе одно піднімається, використовує сховище; невдалий запуск означає, що проєкт справді працював на копії.

Запишіть оновлення і відкат

Відкат сильно різниться між двома родинами, і ця різниця належить до проєктної записки, а не до дзвінка про інцидент. Ключ у файлі можна зберегти зашифрованим і відновити, тож невдала міграція оборотна. Неекспортований ключ не можна зберегти взагалі, що робить перевипуск і повторну реєстрацію єдиним шляхом відновлення, коли пристрій помирає.

Перевіряйте сплив, поки він не став збоєм: openssl x509 -in vpn.crt -noout -checkend 2592000 завершується з ненульовим кодом, коли сертифікат спливає протягом тридцяти днів, тому рядок прямо вбудовується в перевірку моніторингу. Щотижневий запуск цього рядка ловить оновлення, яке ніхто не запланував.

Видалення відбувається на сервері: видаліть піра або відкличте серійний номер, потім підтвердьте, що тунель відмовляє, бо клієнт із кешованою сесією може деякий час приховувати наполовину виконаний відклик. Відклик має доходити й до шляху CRL або OCSP концентратора, а не лише до бази даних CA. Сертифікат — публічний документ, і профіль RFC 5280 описує, як він перевіряється; ніщо в цій перевірці не захищає закритий ключ, скопійований до ротації.

Запишіть рішення в одному місці: яке сховище тримає ключ, який процес може його використовувати, хто може перевипустити його і який відкат. Цей абзац — те, що питають аудитори, і те, що переживає зміну персоналу.

Схожі статті