Kur VPN raktų faile yra RSA n, e, d, p ir q
n, e, d, p ir q yra vienoje struktūroje, o ne failų pavadinimuose. Perskaitykite RSA VPN raktą su OpenSSL ir susiekite jį su jo sertifikatu nespausdindami paslapčių.
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.
| 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 |
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.