Слова у објашњењу 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

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

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

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