Увоз не успева са грешком сертификата, па очигледан корак изгледа као конверзија. Тај инстинкт води људе путем на коме се наставак датотеке мења, а одбијање остаје потпуно исто. Ред ssh-ed25519 у authorized_keys и клијентски сертификат OpenVPN су одвојени објекти акредитива, са различитим издаваоцима, различитим кодирањима и различитим путањама опозива. Ако ове провере прођете по реду, за минут ћете знати да ли конверзија уопште може да помогне.

Који објекат заправо имате?

Постоји пет ствари које људи називају кључем, а само једна од њих је оно што TLS профил тражи. Јавни SSH кључ је један ред текста са префиксом типа и base64 садржајем. OpenSSH сертификат је тај кључ плус потпис, principals и опције, које производи ssh-keygen наступајући као сопствени мали CA. X.509 сертификат је потпуно друга структура: носи субјекат, прозор важности, проширења и потпис од сертификационог тела. Приватни кључ је тајна половина, а издати пакет је обично сертификат плус његов ланац плус приватни кључ у једној датотеци.

Први тест кошта једну команду. Усмерите openssl на датотеку и затражите да рашчлани структуру сертификата:

openssl x509 -in client.crt -noout -subject -issuer

Ако то не успе са грешком немогућег учитавања или PEM грешком, датотека није X.509 сертификат како год да сте је назвали. Преименовање не преписује ASN.1 унутра, а то не чини ни умотавање реда јавног кључа у PEM заглавље.

Да ли профил уопште тражи сертификат?

Клијентски сертификати су један метод аутентификације међу неколико, и многи исправни TLS профили их никада не траже. Сервер може да аутентификује кориснике преко додатка, корисничког имена и лозинке или токен позадине, док истовремено захтева од клијента да провери идентитет сервера. Ако профил не садржи директиву о клијентском сертификату, ниједан сертификат никада неће бити затражен, и никаква конверзија неће натерати приступник да га затражи.

Старије конфигурације са статичким кључем су трећи случај. Оне претходе TLS руковању и очекују датотеку унапред подељене тајне, због чега ни лепљење јавног клуча у то поље не може да ради. Прочитајте шта профил заиста тражи пре него што закључите да акредитив није исправан.

Шта поновно кодирање може и не може

Приватни кључеви имају легитимне алтернативне контејнере. Исти RSA или EC кључ може се записати као традиционални PEM, као PKCS#8 или унутар PKCS#12 пакета, а алати радо конвертују између њих. Јавни кључеви имају сличну причу: ssh-keygen може да испише RFC 4716 облик SSH клуча, а OpenSSH разуме и сопствени формат сертификата. Све је то представљање, а представљање није поверење.

Оно што конверзија не може јесте да створи потпис сертификационог тела које никада није видело ваш кључ. Сертификат је тврдња издаваоца да одређени јавни кључ припада одређеном субјекту за одређену сврху. Поновно кодирање чува бајтове клуча и оставља тврдњу одсутном, па приступник нема шта да провери према свом складишту поверења.

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

Где сертификационо тело улази у слику

Права регистрација почиње паром кључева којим управљате и захтевом за потписивање сертификата који носи субјекат који оператер очекује. Оператер проверава право, потписује захтев CA кључем и враћа издати сертификат заједно са било којим посредничким ланцем који клијент мора да представи. Затим је клијенту потребан CA сертификат који га је потписао, јер управо он омогућава да потврди да сервер са којим разговара припада истом распоређивању.

Та последња датотека се лако заборавља и немогуће ју је заменити. Сам потписни кључ CA никада не припада у клијентску конфигурацију, и никаква локална конверзија не производи ланац који је требало да добијете.

Шта вас кошта поновна употреба SSH клуча

Претпоставимо да је конверзија ипак произвела нешто прихватљиво. Поновна употреба једног пара кључева за SSH приступ и VPN аутентификацију и даље спаја две независне безбедносне одлуке. Уклањање записа из authorized_keys зауставља SSH пријаве и не чини ништа сертификату који је CA VPN-а већ издао за исти јавни кључ. VPN страна се опозива сопственим механизмом, односно листом опозваних сертификата или регистрационим записом оператера.

Зато контролна листа завршава условом заустављања, а не триком. Ако openssl не рашчлани датотеку као сертификат, зауставите конверзију и опишите шта имате: SSH кључ, SSH сертификат, X.509 сертификат, приватни кључ или пакет. Ако профил не тражи клијентски сертификат, зауставите се и питајте који метод аутентификације сервер очекује. Само када оба одговора указују на X.509, регистрација постаје следећи корак, и тај разговор иде много брже са правом именицом у првој реченици.

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