RSA paaiškinimo raidės įvardija vieno objekto vidaus laukus, o ne failus, kuriuos išduoda PKI įrankis. Privataus rakto failas turi struktūrą, kurios pirmieji laukai yra vieši, o vėlesni laukai niekada neturi palikti mašinos, kuri užbaigia tunelį. Tarp šių dviejų faktų slypi dauguma praktinių klausimų, kuris failas atsako į kurį klausimą. Šis vadovas pirmiausia skaito struktūrą, o paskui komandas, kurios ją tikrina jos neišpildamos.

Prieš ieškodami pirminių skaičių įsitikinkite, kad raktas yra RSA

Sertifikatas įrodo, kad koks nors raktas egzistuoja ir buvo pasirašytas; jis neįrodo, kad raktas yra RSA. Sistemos gali būti kuriamos ant elipsinių kreivių arba Ed25519, ir ta pati katalogų struktūra tinka visoms. Patikrinkite algoritmą prieš pradedant ieškoti pirminių veiksnių, kurių niekada nebuvo.

Šios trys tik skaitymo komandos atsako į klausimą ir įrašo įrankio versiją.

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

Versija svarbi, nes pasirinkimų pavadinimai tarp pagrindinių leidimų pasislinko. Sertifikato išvestyje raskite viešojo rakto algoritmo eilutę ir rakto dydį; rakto išvestyje RSA raktas spausdina modulį ir viešąjį eksponentą. Elipsinės kreivės raktas vietoj to spausdina pavadintą kreivę, ir jokia paieška iš jo negaus n ar q.

Skaitykite struktūrą, o ne base64

PEM yra base64, apvyniotas antraštės eilutėmis, o jo dekodavimas duoda DER, tai yra serializuotą struktūrą, o ne vieną didžiulį sveikąjį skaičių. RSA privatūs raktai keliauja dviejuose įprastuose konteineriuose, PKCS#1 ir PKCS#8, ir abu susiveda į tą patį skaičių rinkinį.

Dviejų pirminių skaičių atveju privati struktūra turi devynis laukus: versiją, modulį n, viešąjį eksponentą e, privatųjį eksponentą d, pirminius skaičius p ir q, du CRT eksponentus ir CRT koeficientą. RFC 8017 A.1 skyrius apibrėžia šiuos komponentus ir ASN.1 išdėstymą, taip pat leidžia daugiau nei du pirminius skaičius, todėl bendras analizatorius gali spausdinti papildomus pirminių skaičių įrašus. Atkreipkite dėmesį į tvarką, nes ji paaiškina dažną klaidą: viešoji pusė saugoma privačiame faile, todėl viešo lauko buvimas nepadaro to failo saugaus bendrinti. Viskas po jo yra medžiaga, kuri turi likti pagrindiniame kompiuteryje.

Kodavimas prideda sluoksnį, kurį lengva supainioti su turiniu. openssl asn1parse piešia struktūrą kaip medį, kad laukų tvarka taptų matoma, ir jis nieko neiššifruoja ir nepasako, ar raktas tinkamas naudoti.

Susiekite sertifikatą su raktu nespausdindami rakto

Kitas klausimas paprastai yra, ar sertifikatas ir raktas priklauso vienas kitam. Modulių palyginimas į jį atsako, bet jis taip pat nukopijuoja artimą privačiam medžiagą į terminalo įrašą, kuris gali atsidurti biliete. Viešųjų pusių palyginimas į tą patį klausimą atsako ekrane neturint nieko jautraus.

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

Ident iški failai reiškia, kad sertifikatas turi to rakto viešąją pusę, o skirtumas reiškia, kad laikote neteisingą porą. Būtent šis neatitikimas yra dažniausia tunelio, kuris linksmai derasi ir paskui atmeta autentifikaciją, priežastis. Po to pašalinkite du laikinuosius failus; juose nėra nieko slapto, bet švariame darbo kataloge lengviau mąstyti incidento viduryje.

Žinokite, kas nėra gretimi failai

Sertifikatas nėra užšifruotas viešasis raktas, kurį kita pusė atrakina CA sertifikatu; tai pasirašytas ryšys tarp viešojo rakto ir tapatybės duomenų. CA privatusis pasirašymo raktas lieka atskirai nuo savo paties sertifikato ir nuo kiekvieno kliento rakto. Užklausa taip pat nėra sertifikatas: ji turi prašomą informaciją ir viešąjį raktą su parašu ant užklausos, todėl ji yra registracijos įvestis, o ne teisės įrodymas.

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

Du iš tų įrašų pakankamai dažnai painiojami su RSA parametrais, kad juos reikia pavadinti du kartus. Diffie-Hellman parametrų failas turi grupės parametrus raktui nustatyti ir nė vieno RSA pirminio skaičiaus, nors jis taip pat spausdinamas kaip didelis pirminis skaičius. Atšaukimo sąrašas skelbia sertifikatų būseną ir nėra vieta, kur galėtų pasislėpti privatusis eksponentas.

Todėl kiekviena inventorizacijos eilutė turėtų įrašyti keturis dalykus: objekto tipą, savininką, paskirtį ir ar įtraukta privati medžiaga. Paskutinis stulpelis nusprendžia, kur failą galima kopijuoti, ir būtent jį žmonės praleidžia.

Užrašykite susiejimą, tada patikrinkite rankos paspaudimą

Prieš ką nors keisdami, išsaugokite patikros išvestį su data ir OpenSSL versija. Vėliau rotaciją bus galima palyginti su įrodymais, o ne su atmintimi.

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

Po viešojo rakto palyginimo praeikite kelią, kuris sunaudoja porą: pakelkite tunelį, patvirtinkite, kad sertifikatas pateikiamas ir priimamas, ir patikrinkite, kokią tapatybę užrašė šliuzas. Jei raktas ir sertifikatas sutampa, o autentifikacija vis tiek nepavyksta, defektas yra pasitikėjime, tapatybės susiejime arba prieigos politikoje, o ne poroje.

Grąžinimui laikykite ankstesnį raktą ir sertifikatą datuotame kataloge ir atkurkite abu kartu, niekada tik vieną iš dviejų. Raktas be sertifikato ir sertifikatas be rakto iš išorės nepavyksta vienodai, todėl pusiau atkurtas poras brangu išnarplioti antrą valandą nakties.

Susiję straipsniai