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.

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

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.

Povezani članci