Дзе ў файле ключа VPN жывуць n, e, d, p і q з RSA
n, e, d, p і q знаходзяцца ўнутры адной структуры, а не ў імёнах файлаў. Прачытайце ключ RSA для VPN праз OpenSSL і супастаўце яго з сертыфікатам, не выводзячы сакрэтаў.
Літары ў тлумачэнні 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 застаецца асобным ад уласнага сертыфіката і ад кожнага кліенцкага ключа. Запыт таксама не сертыфікат: ён нясе запытаныя звесткі і публічны ключ з подпісам над запытам, што робіць яго ўводам для рэгістрацыі, а не доказам права.
| File | Answers | Does not prove |
|---|---|---|
| vpn-client.key | Possession of the private key | That the identity is enrolled |
| vpn-client.crt | A signed binding of public key to identity | That the client holds the matching key |
| vpn-client.csr | The requested binding and public key | That access was granted |
| dh2048.pem | Group parameters for key exchange | Any RSA component |
| crl.pem | Revocation status for certificates | Anything 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
Пасля параўнання публічнага ключа прагоньце шлях, які спажывае пару: узніміце тунель, пераканайцеся, што сертыфікат прад’яўлены і прыняты, і праверце, якую ідэнтычнасць запісаў шлюз. Калі ключ і сертыфікат супадаюць, а аўтэнтыфікацыя ўсё яшчэ не праходзіць, няспраўнасць у даверы, адлюстраванні ідэнтычнасці або палітыцы доступу, а не ў пары.
Для адкату трымайце папярэдні ключ і сертыфікат у каталозе з датай і аднаўляйце абодва разам, ніколі адзін з двух. Ключ без сертыфіката і сертыфікат без ключа правальваюцца звонку аднолькава, што робіць паўадноўленыя пары дарагімі для расплутвання ў другой гадзіне ночы.