Літары ў тлумачэнні RSA называюць палі ўнутры аднаго аб’екта, а не файлы, якія выдае інструмент PKI. Файл прыватнага ключа ўтрымлівае структуру, першыя палі якой публічныя, а наступныя не павінны пакідаць машыну, што завяршае тунель. Паміж гэтымі двума фактамі ляжыць большасць практычных пытанняў пра тое, які файл адказвае на якое пытанне. Гэты дапаможнік спачатку чытае структуру, а потым каманды, якія агледжваюць яе, не выліваючы яе.

Пераканайцеся, што ключ — RSA, перш чым шукаць простыя лікі

Сертыфікат даказвае, што нейкі ключ існуе і быў падпісаны; ён не даказвае, што ключ — RSA. Сістэмы могуць будавацца на эліптычных крывых або Ed25519, і такая ж структура каталогаў служыць усім ім. Праверце алгарытм, перш чым пачынаць шукаць простыя множнікі, якіх там ніколі не было.

Гэтыя тры каманды толькі для чытання адказваюць на пытанне і запісваюць версію інструмента.

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

Версія важная, бо назвы параметраў перамяшчаліся паміж асноўнымі выпускамі. У вывадзе сертыфіката знайдзіце радок алгарытму публічнага ключа і памер ключа; у вывадзе ключа ключ RSA выводзіць модуль і публічны паказчык. Ключ эліптычнай крывой выводзіць замест гэтага названую крыву, і ніякі пошук не дасць з яго n або q.

Чытайце структуру замест base64

PEM — гэта base64, загорнуты ў радкі загалоўка, і яго дэкадаванне дае DER, гэта значыць серыялізаваную структуру, а не адзін велізарны цэлы лік. Прыватныя ключы RSA падарожнічаюць у двух распаўсюджаных кантэйнерах, PKCS#1 і PKCS#8, і абодва зводзяцца да аднаго набору лікаў.

У выпадку двух простых лікаў прыватная структура нясе дзевяць палёў: версію, модуль n, публічны паказчык e, прыватны паказчык d, простыя лікі p і q, два паказчыкі CRT і каэфіцыент CRT. RFC 8017 раздзел A.1 вызначае гэтыя кампаненты і раскладку ASN.1, а таксама дапускае больш за два простыя лікі, таму агульны аналізатар можа выводзіць дадатковыя запісы простых лікаў. Заўважце парадак, бо ён тлумачыць частвую памылку: публічная палова захоўваецца ўнутры прыватнага файла, таму наяўнасць публічнага поля не робіць гэты файл бяспечным для перадачы. Усё пасля яго — гэта матэрыял, які павінен заставацца на хасце.

Кадаванне дадае пласт, які лёгка зблытаць са змесцівам. openssl asn1parse малюе структуру як дрэва, каб парадак палёў стаў бачным, і ён нічога не расшыфроўвае і не паведамляе, ці прыдатны ключ.

Супстаўце сертыфікат з ключом, не выводзячы ключ

Пытанне, якое ідзе далей, звычайна ў тым, ці належаць сертыфікат і ключ адно аднаму. Параўнанне модуляў адказвае на гэта, але яно таксама капіюе матэрыял, блізкі да прыватнага, у тэрмінальны запіс, які можа апынуцца ў заяўцы. Параўнанне публічных паловак адказвае на тое ж пытанне, не пакідаючы на экране нічога адчувальнага.

openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH

Аднолькавыя файлы азначаюць, што сертыфікат нясе публічную палову гэтага ключа, а розніца азначае, што вы трымаеце няправільную пару. Гэтая няадпаведнасць — самая частая прычына тунеля, які паспяхова дамаўляецца, а потым адмаўляе ў аўтэнтыфікацыі. Пасля выдаліце два часовыя файлы; у іх няма нічога сакрэтнага, але чысты працоўны каталог лягчэй асэнсаваць пасярэдзіне інцыдэнту.

Ведайце, чым не з’яўляюцца суседнія файлы

Сертыфікат — не зашыфраваны публічны ключ, які партнёр адкрывае сертыфікатам CA; гэта падпісаная сувязь паміж публічным ключом і данымі ідэнтычнасці. Прыватны ключ подпісу CA застаецца асобным ад уласнага сертыфіката і ад кожнага кліенцкага ключа. Запыт таксама не сертыфікат: ён нясе запытаныя звесткі і публічны ключ з подпісам над запытам, што робіць яго ўводам для рэгістрацыі, а не доказам права.

FileAnswersDoes not prove
vpn-client.keyPossession of the private keyThat the identity is enrolled
vpn-client.crtA signed binding of public key to identityThat the client holds the matching key
vpn-client.csrThe requested binding and public keyThat access was granted
dh2048.pemGroup parameters for key exchangeAny RSA component
crl.pemRevocation status for certificatesAnything about a private key

Два з гэтых запісаў блытаюць з параметрамі RSA дастаткова часта, каб назваць іх двойчы. Файл параметраў Diffie-Hellman утрымлівае параметры групы для ўсталявання ключа і не ўтрымлівае простых лікаў RSA, хоць ён таксама выводзіцца як вялікі просты лік. Спіс адклікання публікуе статус сертыфікатаў і не з’яўляецца месцам, дзе мог бы схавацца прыватны паказчык.

Таму кожны радок інвентара павінен запісваць чатыры рэчы: тып аб’екта, уладальніка, прызначэнне і ці ўключаны прыватны матэрыял. Апошні слупок вырашае, куды файл можна капіяваць, і менавіта яго людзі прапускаюць.

Запішыце пару, потым праверце рукапоцісканне

Перш чым нешта змяняць, захавайце вывад праверкі з датай і версіяй OpenSSL. Тады наступную ратацыю можна будзе параўнаць з доказам, а не з памяццю.

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

Пасля параўнання публічнага ключа прагоньце шлях, які спажывае пару: узніміце тунель, пераканайцеся, што сертыфікат прад’яўлены і прыняты, і праверце, якую ідэнтычнасць запісаў шлюз. Калі ключ і сертыфікат супадаюць, а аўтэнтыфікацыя ўсё яшчэ не праходзіць, няспраўнасць у даверы, адлюстраванні ідэнтычнасці або палітыцы доступу, а не ў пары.

Для адкату трымайце папярэдні ключ і сертыфікат у каталозе з датай і аднаўляйце абодва разам, ніколі адзін з двух. Ключ без сертыфіката і сертыфікат без ключа правальваюцца звонку аднолькава, што робіць паўадноўленыя пары дарагімі для расплутвання ў другой гадзіне ночы.

Падобныя артыкулы