Črke v razlagi RSA poimenujejo polja znotraj enega objekta, ne datotek, ki jih izda orodje PKI. Datoteka z zasebnim ključem vsebuje strukturo, katere prva polja so javna, poznejša polja pa nikoli ne smejo zapustiti stroja, ki zaključi tunel. Med tema dvema dejstvoma leži večina praktičnih vprašanj, katera datoteka odgovarja na katero vprašanje. Ta priročnik najprej prebere strukturo, nato pa ukaze, ki jo pregledujejo, ne da bi jo razlili.

Pred iskanjem praštevil potrdite, da je ključ RSA

Potrdilo dokazuje, da nek ključ obstaja in je bil podpisan; ne dokazuje, da je ključ RSA. Sisteme je mogoče graditi na eliptičnih krivuljah ali Ed25519 in ista razporeditev map služi vsem. Preverite algoritem, preden začnete iskati prapoštevila, ki jih nikoli ni bilo.

Ti trije ukazi samo za branje odgovorijo na vprašanje in zabeležijo različico orodja.

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

Različica je pomembna, ker so se imena možnosti med glavnimi izdajami premikala. V izpisu potrdila poiščite vrstico algoritma javnega ključa in velikost ključa; v izpisu ključa ključ RSA izpiše modul in javni eksponent. Ključ na eliptični krivulji namesto tega izpiše poimenovano krivuljo in nobeno iskanje iz njega ne bo ustvarilo n ali q.

Berite strukturo namesto base64

PEM je base64, ovit v vrstice glave, in njegovo dekodiranje da DER, torej serializirano strukturo, ne eno ogromno celo število. Zasebni ključi RSA potujejo v dveh običajnih vsebnikih, PKCS#1 in PKCS#8, in oba se razrešita v isto množico števil.

Pri dveh praštevilih zasebna struktura nosi devet polj: različico, modul n, javni eksponent e, zasebni eksponent d, praštevili p in q, dva eksponenta CRT in koeficient CRT. RFC 8017 razdelek A.1 določa te sestavine in postavitev ASN.1 ter dopušča tudi več kot dve praštevili, zato lahko splošni razčlenjevalnik izpiše dodatne vnose praštevil. Bodite pozorni na vrstni red, ker pojasnjuje pogosto napako: javna polovica je shranjena znotraj zasebne datoteke, zato navzočnost javnega polja te datoteke ne naredi varne za deljenje. Vse za tem je gradivo, ki mora ostati na gostitelju.

Kodiranje doda plast, ki jo je lahko zamenjati z vsebino. openssl asn1parse nariše strukturo kot drevo, da postane vrstni red polj viden, in ne dešifrira ničesar ter ne pove, ali je ključ uporaben.

Povežite potrdilo s ključem, ne da bi natisnili ključ

Naslednje vprašanje je običajno, ali potrdilo in ključ spadata skupaj. Primerjava modulov nanj odgovori, a tudi prepiše gradivo blizu zasebnega v terminalski zapis, ki lahko konča v zahtevku. Primerjava javnih polovic odgovori na isto vprašanje brez česa občutljivega na zaslonu.

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

Enake datoteke pomenijo, da potrdilo nosi javno polovico tega ključa, razlika pa pomeni, da imate napačen par. Prav to neskladje je najpogostejši vzrok za tunel, ki se veselo dogovarja in nato zavrne overjanje. Nato odstranite dve začasni datoteki; v njima ni ničesar tajnega, ampak v čisti delovni mapi je lažje razmišljati sredi incidenta.

Vedite, kaj sosednje datoteke niso

Potrdilo ni šifriran javni ključ, ki ga nasprotna stran odklene s potrdilom CA; je podpisana vez med javnim ključem in podatki o identiteti. Zasebni podpisni ključ CA ostaja ločen od lastnega potrdila in od vsakega odjemalskega ključa. Tudi zahteva ni potrdilo: nosi zahtevane informacije in javni ključ s podpisom nad zahtevo, zaradi česar je vnos za vpis in ne dokaz o pravici.

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

Dva od teh vnosov se dovolj pogosto zamenjujeta s parametri RSA, da ju je treba imenovati dvakrat. Datoteka parametrov Diffie-Hellman vsebuje skupinske parametre za vzpostavitev ključa in nobenega praštevila RSA, čeprav se tudi izpiše kot veliko praštevilo. Seznam preklicev objavlja stanje potrdil in ni kraj, kjer bi se zasebni eksponent lahko skril.

Zato naj vsaka vrstica popisa zabeleži štiri stvari: vrsto objekta, lastnika, namen in ali je vključeno zasebno gradivo. Zadnji stolpec odloči, kam se datoteka sme kopirati, in prav tega ljudje preskočijo.

Zabeležite povezavo in nato preverite rokovanje

Preden karkoli spremenite, shranite izpis preverjanja z datumom in različico OpenSSL. Kasnejšo rotacijo je potem mogoče primerjati z dokazi in ne s spominom.

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

Po primerjavi javnega ključa preizkusite pot, ki porablja par: dvignite tunel, potrdite, da je potrdilo predloženo in sprejeto, in preverite, katero identiteto je zabeležil prehod. Če se ključ in potrdilo ujemata, overjanje pa vseeno ne uspe, je napaka v zaupanju, preslikavi identitete ali politiki dostopa in ne v paru.

Za vrnitev hranite prejšnji ključ in potrdilo v mapi z datumom in obnovite oba skupaj, nikoli le enega od dveh. Ključ brez potrdila in potrdilo brez ključa odpovedo od zunaj enako, zaradi česar je napol obnovljene pare drago razvozlati ob dveh zjutraj.

Sorodni članki