Kvar n, e, d, p og q frå RSA bur i ei VPN-nøkkelfil
n, e, d, p og q sit inne i éin struktur, ikkje i filnamn. Les ein RSA VPN-nøkkel med OpenSSL og para han med sertifikatet utan å skrive ut løyndomar.
Bokstavane i ei RSA-forklaring namngjev felt inne i éit objekt, ikkje filer som eit PKI-verktøy deler ut. Ei privatnøkkelfil inneheld ein struktur der dei første felta er offentlege og dei seinare felta aldri må forlate maskina som avsluttar tunnelen. Mellom desse to fakta ligg dei fleste praktiske spørsmåla om kva fil som svarar på kva spørsmål. Denne køyreboka les strukturen først, og deretter kommandoane som granskar han utan å søle han.
Stadfest at nøkkelen er RSA før du leitar etter primtal
Eit sertifikat provar at ein nøkkel finst og er signert; det provar ikkje at nøkkelen er RSA. System kan byggjast på elliptiske kurver eller Ed25519, og same mappestruktur tenar dei alle. Kontroller algoritmen før du byrjar å leite etter primfaktorar som aldri var der.
Desse tre skriveverna kommandoane svarar på spørsmålet og registrerer verktøyversjonen.
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
Versjonen betyr noko fordi valnamn har flytta seg mellom hovudutgåver. I sertifikatet sitt utdata finn du linja for den offentlege nøkkelalgoritmen og nøkkelstorleiken; i nøkkelen sitt utdata skriv ein RSA-nøkkel ut ein modulus og ein offentleg eksponent. Ein nøkkel på ei elliptisk kurve skriv i staden ut ei namngjeven kurve, og inga mengd søking vil få fram n eller q frå han.
Les strukturen i staden for base64
PEM er base64 pakka i overskriftslinjer, og avkoding gjev DER, som er ein serialisert struktur og ikkje eitt enormt heiltal. RSA-privatnøklar reiser i to vanlege behaldarar, PKCS#1 og PKCS#8, og begge løyser seg opp til det same settet med tal.
Når det er to primtal, ber den private strukturen ni felt: ein versjon, modulus n, den offentlege eksponenten e, den private eksponenten d, primtala p og q, to CRT-eksponentar og ein CRT-koeffisient. RFC 8017 avsnitt A.1 definerer desse komponentane og ASN.1-oppsettet, og det tillèt òg meir enn to primtal, difor kan ein generell parser skrive ut ekstra primtaloppføringar. Legg merke til rekkjefølgja, for ho forklarer ein vanleg feil: den offentlege halvdelen er lagra inne i den private fila, så tilstadevere av eit offentleg felt gjer ikkje fila trygg å dele. Alt etter det er materialet som må bli verande på verten.
Koding legg til eit lag som lett blir forveksla med innhald. openssl asn1parse teiknar strukturen som eit tre slik at feltrekkjefølgja blir synleg, og det dekrypterer ingenting og seier heller ikkje om nøkkelen er brukbar.
Para eit sertifikat med ein nøkkel utan å skrive ut nøkkelen
Spørsmålet som følgjer er vanlegvis om eit sertifikat og ein nøkkel høyrer saman. Samanlikning av moduli svarar på det, men kopierer òg materiale nær det private inn i eit terminalutskrift som kan enda i ei sak. Samanlikning av dei offentlege halvdelane svarar på same spørsmål utan noko kjenslevart på skjermen.
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
Identiske filer betyr at sertifikatet ber den offentlege halvdelen av den nøkkelen, og ein skilnad betyr at du held feil par. Den uoverensstemminga er den vanlegaste årsaka til ein tunnel som forhandlar lystig og deretter nektar autentisering. Fjern deretter dei to mellombelse filene; dei inneheld ingenting hemmeleg, men ein rein arbeidskatalog er lettare å tenkje gjennom midt i ei hending.
Vit kva nabofilene ikkje er
Eit sertifikat er ikkje ein kryptert offentleg nøkkel som motparten låser opp med CA-sertifikatet; det er ei signert binding mellom ein offentleg nøkkel og identitetsdata. CA-en sin private signeringsnøkkel held seg skild frå sitt eige sertifikat og frå kvar klientnøkkel. Ein førespurnad er heller ikkje eit sertifikat: han ber den etterspurde informasjonen og den offentlege nøkkelen med ein signatur over førespurnaden, noko som gjer han til påmelding og ikkje prov på rett.
| 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 |
To av desse oppføringane blir forveksla med RSA-parametrar ofte nok til å nemnast to gonger. Ei Diffie-Hellman-parameterfil inneheld gruppeparametrar for nøkkeloppsett og ingen RSA-primtal, sjølv om ho òg blir skriven ut som eit stort primtal. Ei tilbakekallingsliste publiserer sertifikatstatus og er ikkje ein stad der ein privat eksponent kunne gøyme seg.
Kvar inventarlinje bør difor registrere fire ting: objekttype, eigar, føremål og om privat materiale er inkludert. Den siste kolonnen avgjer kvar fila kan kopierast, og det er den folk hoppar over.
Registrer para og stadfest deretter handtrykket
Før du endrar noko, lagre stadfestingsutdata med datoen og OpenSSL-versjonen. Då kan ein seinare rotasjon samanliknast med prov i staden for med minne.
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
Etter samanlikninga av den offentlege nøkkelen, gå gjennom vegen som forbrukar paret: heis tunnelen, stadfest at sertifikatet blir presentert og godteke, og kontroller kva identitet gatewayen registrerte. Viss nøkkelen og sertifikatet stemmer og autentiseringa likevel feilar, ligg feilen i tillit, identitetsmapping eller tilgangspolicy og ikkje i paret.
For tilbakerulling, oppbevar den førre nøkkelen og sertifikatet i ein datert katalog og gjenopprett begge saman, aldri berre éin av dei to. Ein nøkkel utan sertifikatet sitt og eit sertifikat utan nøkkelen sin feilar likt utanfrå, noko som gjer halvt gjenoppretta par dyre å nøste opp klokka to om natta.