Два питања одлучују где припада приватни кључ 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 описује како се валидира; ништа у тој валидацији не штити приватни кључ копиран пре ротације.

Запишите одлуку на једном месту: које складиште држи кључ, који процес сме да га користи, ко може поново да га изда и какво је враћање. Тај пасус је оно што траже ревизори и оно што преживљава смену особља.

Повезани чланци