Kur VPN atslēgas failā atrodas RSA n, e, d, p un q
n, e, d, p un q atrodas vienā struktūrā, nevis failu nosaukumos. Lasiet RSA VPN atslēgu ar OpenSSL un sasaistiet to ar tās sertifikātu, neizdrukājot noslēpumus.
RSA skaidrojuma burti nosauc viena objekta iekšējos laukus, nevis failus, ko izsniedz PKI rīks. Privātās atslēgas fails satur struktūru, kuras pirmie lauki ir publiski, bet vēlākie lauki nekad nedrīkst pamest mašīnu, kas pabeidz tuneli. Starp šiem diviem faktiem atrodas lielākā daļa praktisko jautājumu par to, kura fails atbild uz kuru jautājumu. Šī rokasgrāmata vispirms lasa struktūru un pēc tam komandas, kas to pārbauda to neizberot.
Pirms meklējat pirmskaitļus, pārliecinieties, ka atslēga ir RSA
Sertifikāts pierāda, ka kāda atslēga pastāv un ir parakstīta; tas nepierāda, ka atslēga ir RSA. Sistēmas var būvēt uz eliptiskām līknēm vai Ed25519, un tā pati direktoriju struktūra kalpo tām visām. Pārbaudiet algoritmu, pirms sākat meklēt pirmskaitļu faktorus, kuru nekad nav bijis.
Šīs trīs tikai lasīšanas komandas atbild uz jautājumu un ieraksta rīka versiju.
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
Versija ir svarīga, jo opciju nosaukumi ir pārvietojušies starp galvenajiem laidieniem. Sertifikāta izvadē atrodiet publiskās atslēgas algoritma rindu un atslēgas izmēru; atslēgas izvadē RSA atslēga izdrukā moduli un publisko eksponentu. Eliptiskās līknes atslēga tā vietā izdrukā nosauktu līkni, un nekāda meklēšana no tās nedos n vai q.
Lasiet struktūru, nevis base64
PEM ir base64, kas ietīts virsraksta rindās, un tā dekodēšana dod DER, tas ir, serializētu struktūru, nevis vienu milzīgu veselu skaitli. RSA privātās atslēgas ceļo divos ierastos konteineros, PKCS#1 un PKCS#8, un abi izšķiras tajā pašā skaitļu kopā.
Divu pirmskaitļu gadījumā privātā struktūra satur deviņus laukus: versiju, moduli n, publisko eksponentu e, privāto eksponentu d, pirmskaitļus p un q, divus CRT eksponentus un CRT koeficientu. RFC 8017 A.1 nodaļa definē šos komponentus un ASN.1 izkārtojumu, un tā pieļauj arī vairāk nekā divus pirmskaitļus, tāpēc vispārīgs parsētājs var izdrukāt papildu pirmskaitļu ierakstus. Pievērsiet uzmanību secībai, jo tā izskaidro biežu kļūdu: publiskā puse tiek glabāta privātajā failā, tāpēc publiska lauka klātbūtne nepadara šo failu drošu kopīgošanai. Viss pēc tam ir materiāls, kam jāpaliek uz resursdatora.
Kodēšana pievieno slāni, ko viegli sajaukt ar saturu. openssl asn1parse zīmē struktūru kā koku, lai lauku secība kļūtu redzama, un tas neko neatšifrē un arī nepasaka, vai atslēga ir lietojama.
Sasaistiet sertifikātu ar atslēgu, neizdrukājot atslēgu
Nākamais jautājums parasti ir, vai sertifikāts un atslēga pieder kopā. Moduļu salīdzināšana uz to atbild, bet tā arī nokopē privātajam tuvu materiālu termināļa ierakstā, kas var nonākt biļetē. Publisko pušu salīdzināšana atbild uz to pašu jautājumu, ekrānā neaturinot neko sensitīvu.
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
Identiski faili nozīmē, ka sertifikāts satur šīs atslēgas publisko pusi, un atšķirība nozīmē, ka turat nepareizo pāri. Tieši šī neatbilstība ir visbiežākais iemesls tunelim, kas jautri pārrunā un pēc tam atsakās autentificēt. Pēc tam noņemiet divus pagaidu failus; tajos nav nekā slepena, bet tīrā darba mapē ir vieglāk domāt incidenta vidū.
Ziniet, kas nav blakus esošie faili
Sertifikāts nav šifrēta publiskā atslēga, ko otra puse atslēdz ar CA sertifikātu; tas ir parakstīta saite starp publisko atslēgu un identitātes datiem. CA privātā parakstīšanas atslēga paliek atsevišķi no sava sertifikāta un no katras klienta atslēgas. Pieprasījums arī nav sertifikāts: tas satur pieprasīto informāciju un publisko atslēgu ar parakstu uz pieprasījuma, kas padara to par reģistrācijas ievadi, nevis tiesību pierādījumu.
| 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 |
Divi no šiem ierakstiem tiek sajaukti ar RSA parametriem pietiekami bieži, lai tos nosauktu divreiz. Diffie-Hellman parametru fails satur grupas parametrus atslēgas izveidei un nevienu RSA pirmskaitli, lai gan tas arī izdrukājas kā liels pirmskaitlis. Atsaukšanas saraksts publicē sertifikātu statusu un nav vieta, kur privātais eksponents varētu paslēpties.
Tāpēc katrai inventāra rindai būtu jāreģistrē četras lietas: objekta tips, īpašnieks, mērķis un vai ir iekļauts privāts materiāls. Pēdējā kolonna izlemj, kur failu drīkst kopēt, un tieši to cilvēki izlaiž.
Pierakstiet sasaisti un pēc tam pārbaudiet rokasspiedienu
Pirms kaut ko maināt, saglabājiet pārbaudes izvadi ar datumu un OpenSSL versiju. Tad vēlāku rotāciju var salīdzināt ar pierādījumiem, nevis ar atmiņu.
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
Pēc publiskās atslēgas salīdzināšanas izstaigājiet ceļu, kas patērē pāri: paceliet tuneli, apstipriniet, ka sertifikāts tiek uzrādīts un pieņemts, un pārbaudiet, kādu identitāti vārteja ierakstīja. Ja atslēga un sertifikāts sakrīt un autentifikācija tomēr neizdodas, defekts ir uzticēšanās, identitātes kartēšanā vai piekļuves politikā, nevis pārī.
Atritināšanai glabājiet iepriekšējo atslēgu un sertifikātu datētā mapē un atjaunojiet abus kopā, nekad tikai vienu no diviem. Atslēga bez sertifikāta un sertifikāts bez atslēgas no ārpuses neizdodas vienādi, kas padara daļēji atjaunotus pārus dārgus atšķetināt divos naktī.