Kus asuvad VPN-võtmefailis RSA n, e, d, p ja q
n, e, d, p ja q asuvad ühe struktuuri sees, mitte failinimedes. Lugege RSA VPN-võtit OpenSSL-iga ja siduge see oma sertifikaadiga ilma saladusi välja trükkimata.
RSA selgituse tähed nimetavad ühe objekti sees olevaid välju, mitte faile, mida PKI tööriist välja jagab. Privaatvõtmefail hoiab struktuuri, mille esimesed väljad on avalikud ja mille hilisemad väljad ei tohi kunagi lahkuda masinast, mis tunnelit lõpetab. Nende kahe tõsiasja vahel on enamik praktilisi küsimusi, milline fail vastab millisele küsimusele. See käsiraamat loeb kõigepealt struktuuri ja seejärel käsud, mis seda uurivad seda välja valamata.
Kinnitage, et võti on RSA, enne kui otsite algarve
Sertifikaat tõestab, et mingi võti on olemas ja allkirjastatud; see ei tõesta, et võti on RSA. Süsteeme saab ehitada elliptilistele kõveratele või Ed25519-le, ja sama kataloogipaigutus teenindab neid kõiki. Kontrollige algoritmi enne, kui hakkate otsima algtegureid, mida kunagi ei olnud.
Need kolm ainult lugemiseks mõeldud käsku vastavad küsimusele ja salvestavad tööriista versiooni.
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
Versioon on oluline, sest valikute nimed on suurväljaannete vahel liikunud. Sertifikaadi väljundist leidke avaliku võtme algoritmi rida ja võtme suurus; võtme väljundis trükib RSA võti mooduli ja avaliku eksponendi. Elliptilise kõvera võti trükib selle asemel nimetatud kõvera, ja ükski otsing ei anna sellest n ega q.
Lugege struktuuri, mitte base64
PEM on päisridadesse mässitud base64 ja selle dekodeerimine annab DER-i, mis on serialiseeritud struktuur, mitte üks tohutu täisarv. RSA privaatvõtmed liiguvad kahes levinud konteineris, PKCS#1 ja PKCS#8, ja mõlemad taanduvad samale arvude hulgale.
Kahe algarvu korral kannab privaatstruktuur üheksa välja: versioon, moodul n, avalik eksponent e, privaatne eksponent d, algarvud p ja q, kaks CRT eksponenti ja CRT koefitsient. RFC 8017 jaotis A.1 määratleb need komponendid ja ASN.1 paigutuse ning lubab ka rohkem kui kahte algarvu, mistõttu üldine parser võib välja trükkida lisakirjeid algarvude kohta. Pange tähele järjekorda, sest see selgitab sagedast viga: avalik pool on salvestatud privaatfaili sisse, seega avaliku välja olemasolu ei tee seda faili jagamiseks turvaliseks. Kõik pärast seda on materjal, mis peab jääma hosti.
Kodeerimine lisab kihi, mida on lihtne sisuga segi ajada. openssl asn1parse joonistab struktuuri puuna, nii et väljade järjekord muutub nähtavaks, ning see ei dekrüpteeri midagi ega ütle, kas võti on kasutatav.
Siduge sertifikaat võtmega ilma võtit trükkimata
Järgmine küsimus on tavaliselt, kas sertifikaat ja võti kuuluvad kokku. Moodulite võrdlemine vastab sellele, kuid kopeerib ka privaatse lähedase materjali terminali transkripti, mis võib sattuda piletisse. Avalike poolte võrdlemine vastab samale küsimusele ilma ekraanil midagi tundlikku näitamata.
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
Identsed failid tähendavad, et sertifikaat kannab selle võtme avalikku poolt, ja erinevus tähendab, et hoiate valet paari. See mittevastavus on kõige tavalisem põhjus tunnelil, mis rõõmsalt läbi räägib ja seejärel autentimisest keeldub. Seejärel eemaldage kaks ajutist faili; neis pole midagi salajast, kuid puhas töökataloog on intsidendi keskel lihtsam läbi mõelda.
Tea, mis naaberfailid ei ole
Sertifikaat ei ole krüpteeritud avalik võti, mille partner CA sertifikaadiga lahti lukustab; see on allkirjastatud side avaliku võtme ja identiteediandmete vahel. CA privaatne allkirjastamisvõti püsib eraldi tema enda sertifikaadist ja igast kliendivõtmest. Taotlus ei ole samuti sertifikaat: see kannab taotletud teavet ja avalikku võtit koos taotluse kohal oleva allkirjaga, mis teeb sellest registreerimise sisendi, mitte õiguse tõestuse.
| 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 |
Kahte neist kirjetest aetakse RSA parameetritega piisavalt sageli segi, et neid kaks korda nimetada. Diffie-Hellmani parameetrifail sisaldab võtme loomiseks rühmaparameetreid ja mitte ühtegi RSA algarvu, kuigi see trükitakse ka suure algarvuna. Tühistamisnimekiri avaldab sertifikaatide oleku ega ole koht, kuhu privaatne eksponent võiks peituda.
Seetõttu peaks iga inventuuririda registreerima neli asja: objekti tüüp, omanik, otstarve ja kas privaatne materjal on kaasas. Viimane veerg otsustab, kuhu faili tohib kopeerida, ja just selle jätavad inimesed vahele.
Registreerige sidumine ja seejärel kontrollige kätlust
Enne millegi muutmist salvestage kontrolli väljund koos kuupäeva ja OpenSSL-i versiooniga. Siis saab hilisemat rotatsiooni võrrelda tõenditega, mitte mäluga.
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
Pärast avaliku võtme võrdlemist proovige rada, mis paari tarbib: tõstke tunnel üles, kinnitage, et sertifikaat esitatakse ja võetakse vastu, ning kontrollige, millise identiteedi lüüs salvestas. Kui võti ja sertifikaat klapivad ning autentimine siiski ebaõnnestub, on viga usalduses, identiteedi vastendamises või juurdepääsupoliitikas, mitte paaris.
Tagasipööramiseks hoidke eelmist võtit ja sertifikaati dateeritud kataloogis ning taastage mõlemad koos, mitte kunagi üks kahest. Võti ilma sertifikaadita ja sertifikaat ilma võtmeta ebaõnnestuvad väljastpoolt ühtemoodi, mis teeb pooleldi taastatud paarid kalliks öösel kell kaks lahti harutada.