Gdje u datoteci ključa VPN žive n, e, d, p i q iz RSA
n, e, d, p i q stoje unutar jedne strukture, a ne u imenima datoteka. Pročitajte RSA ključ za VPN pomoću OpenSSL-a i uparite ga s njegovim certifikatom bez ispisivanja tajni.
Slova u objašnjenju RSA imenuju polja unutar jednog objekta, a ne datoteke koje PKI alat dijeli. Datoteka privatnog ključa drži strukturu čija su prva polja javna, a kasnija polja nikada ne smiju napustiti mašinu koja zaključuje tunel. Između te dvije činjenice leži većina praktičnih pitanja o tome koja datoteka odgovara na koje pitanje. Ovaj priručnik prvo čita strukturu, a zatim naredbe koje je pregledaju bez njezina prosipanja.
Potvrdite da je ključ RSA prije traženja prostih brojeva
Certifikat dokazuje da neki ključ postoji i da je potpisan; ne dokazuje da je ključ RSA. Sustavi se mogu graditi na eliptičkim krivuljama ili Ed25519 i isti raspored mapa služi svima njima. Provjerite algoritam prije nego što počnete tražiti proste faktore kojih nikada nije bilo.
Ove tri naredbe samo za čitanje odgovaraju na pitanje i bilježe verziju alata.
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
Verzija je važna jer su se nazivi opcija selili između glavnih izdanja. U izlazu certifikata pronađite redak algoritma javnog ključa i veličinu ključa; u izlazu ključa RSA ključ ispisuje modul i javni eksponent. Ključ eliptičke krivulje umjesto toga ispisuje imenovanu krivulju i nikakvo pretraživanje iz njega neće izvući n ili q.
Čitajte strukturu umjesto base64
PEM je base64 umotan u zaglavlja, a njegovo dekodiranje daje DER, to jest serijaliziranu strukturu, a ne jedan golemi cijeli broj. RSA privatni ključevi putuju u dva uobičajena spremnika, PKCS#1 i PKCS#8, i oba se svode na isti skup brojeva.
U slučaju dva prosta broja privatna struktura nosi devet polja: verziju, modul n, javni eksponent e, privatni eksponent d, proste brojeve p i q, dva CRT eksponenta i CRT koeficijent. RFC 8017 odjeljak A.1 definira te komponente i raspored ASN.1, a dopušta i više od dva prosta broja, zato opći parser može ispisati dodatne unose prostih brojeva. Obratite pozornost na redoslijed jer objašnjava čestu pogrešku: javna polovica pohranjena je unutar privatne datoteke, pa prisutnost javnog polja ne čini tu datoteku sigurnom za dijeljenje. Sve nakon toga materijal je koji mora ostati na hostu.
Kodiranje dodaje sloj koji je lako zamijeniti sa sadržajem. openssl asn1parse crta strukturu kao stablo pa redoslijed polja postaje vidljiv, a ne dekriptira ništa niti kaže je li ključ upotrebljiv.
Uparite certifikat s ključem bez ispisivanja ključa
Pitanje koje slijedi obično je pripadaju li certifikat i ključ zajedno. Usporedba modula odgovara na to, ali i kopira materijal blizak privatnom u terminalski zapis koji može završiti u ticketu. Usporedba javnih polovica odgovara na isto pitanje bez ičega osjetljivog na ekranu.
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
Identične datoteke znače da certifikat nosi javnu polovicu tog ključa, a razlika znači da držite pogrešan par. Ta neusklađenost najčešći je uzrok tunela koji se veselo dogovara i zatim odbija autentifikaciju. Zatim uklonite dvije privremene datoteke; u njima nema ničega tajnog, ali čist radni direktorij lakše je promisliti nasred incidenta.
Znajte što susjedne datoteke nisu
Certifikat nije šifrirani javni ključ koji partner otključava certifikatom CA; to je potpisana veza između javnog ključa i podataka o identitetu. Privatni ključ za potpis CA ostaje odvojen od vlastitog certifikata i od svakog klijentskog ključa. Zahtjev također nije certifikat: nosi tražene podatke i javni ključ s potpisom na zahtjevu, što ga čini ulazom za upis, a ne dokazom prava.
| 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 |
Dva se od tih unosa dovoljno često brkaju s RSA parametrima pa ih treba dvaput imenovati. Datoteka parametara Diffie-Hellman sadrži grupne parametre za uspostavu ključa i nijedan RSA prosti broj, iako se i ona ispisuje kao velik prosti broj. Popis opoziva objavljuje status certifikata i nije mjesto gdje bi se privatni eksponent mogao skriti.
Zato svaki redak inventara treba zabilježiti četiri stvari: vrstu objekta, vlasnika, namjenu i je li uključen privatni materijal. Zadnji stupac odlučuje kamo se datoteka smije kopirati i upravo njega ljudi preskaču.
Zabilježite uparivanje, pa provjerite rukovanje
Prije nego što bilo što promijenite, spremite izlaz provjere s datumom i verzijom OpenSSL-a. Kasnija se rotacija tada može usporediti s dokazom, a ne s pamćenjem.
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
Nakon usporedbe javnog ključa prođite putem koji troši par: podignite tunel, potvrdite da je certifikat predstavljen i prihvaćen te provjerite koji je identitet pristupnik zabilježio. Ako se ključ i certifikat podudaraju, a autentifikacija ipak ne uspijeva, kvar je u povjerenju, preslikavanju identiteta ili politici pristupa, a ne u paru.
Za povratak držite prethodni ključ i certifikat u direktoriju s datumom i vraćajte oboje zajedno, nikada samo jedno. Ključ bez certifikata i certifikat bez ključa izvana ne uspijevaju jednako, što polovično vraćene parove čini skupima za rasplitanje u dva sata ujutro.