De letters in een RSA-uitleg benoemen velden binnen één object, niet bestanden die een PKI-hulpmiddel uitgeeft. Een bestand met een privésleutel bevat een structuur waarvan de eerste velden openbaar zijn en de latere velden nooit de machine mogen verlaten die de tunnel beëindigt. Tussen die twee feiten liggen de meeste praktische vragen over welk bestand op welke vraag antwoord geeft. Deze handleiding leest eerst de structuur en daarna de opdrachten die haar onderzoeken zonder haar te morsen.

Bevestig dat de sleutel RSA is voordat je naar priemgetallen zoekt

Een certificaat bewijst dat een sleutel bestaat en ondertekend is; het bewijst niet dat de sleutel RSA is. Systemen kunnen op elliptische krommen of Ed25519 worden gebouwd, en dezelfde mapindeling dient ze allemaal. Controleer het algoritme voordat je gaat zoeken naar priemfactoren die er nooit waren.

Deze drie alleen-lezen opdrachten beantwoorden de vraag en leggen de versie van het hulpmiddel vast.

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

De versie is belangrijk omdat optienamen tussen hoofdversies zijn verschoven. Zoek in de certificaatsuitvoer de regel van het publieke-sleutelalgoritme en de sleutelgrootte; in de sleuteluitvoer drukt een RSA-sleutel een modulus en een publieke exponent af. Een sleutel op een elliptische kromme drukt in plaats daarvan een benoemde kromme af, en geen enkele zoekopdracht levert daaruit n of q.

Lees de structuur in plaats van de base64

PEM is base64 gewikkeld in kopregels, en decoderen geeft DER, dat wil zeggen een geserialiseerde structuur en niet één enorm geheel getal. RSA-privésleutels reizen in twee gangbare containers, PKCS#1 en PKCS#8, en beide lossen op in dezelfde verzameling getallen.

In het geval van twee priemgetallen draagt de privéstructuur negen velden: een versie, de modulus n, de publieke exponent e, de privé-exponent d, de priemgetallen p en q, twee CRT-exponenten en een CRT-coëfficiënt. RFC 8017 paragraaf A.1 definieert die onderdelen en de ASN.1-indeling, en staat ook meer dan twee priemgetallen toe, daarom kan een algemene parser extra priemgetalregels afdrukken. Let op de volgorde, want die verklaart een veelgemaakte fout: de publieke helft staat in het privébestand, dus de aanwezigheid van een publiek veld maakt dat bestand niet veilig om te delen. Alles daarna is het materiaal dat op de host moet blijven.

Codering voegt een laag toe die gemakkelijk met inhoud wordt verward. openssl asn1parse tekent de structuur als een boom zodat de veldvolgorde zichtbaar wordt, en het ontsleutelt niets en zegt ook niet of de sleutel bruikbaar is.

Koppel een certificaat aan een sleutel zonder de sleutel af te drukken

De volgende vraag is meestal of een certificaat en een sleutel bij elkaar horen. Moduli vergelijken beantwoordt dat, maar kopieert ook materiaal dicht bij het privédeel naar een terminaltranscript dat in een ticket kan belanden. De publieke helften vergelijken beantwoordt dezelfde vraag zonder iets gevoeligs op het scherm.

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

Identieke bestanden betekenen dat het certificaat de publieke helft van die sleutel draagt, en een verschil betekent dat je het verkeerde paar vasthoudt. Die ongelijkheid is de meest voorkomende oorzaak van een tunnel die vrolijk onderhandelt en daarna authenticatie weigert. Verwijder daarna de twee tijdelijke bestanden; ze bevatten niets geheims, maar een schone werkmap is gemakkelijker te beredeneren midden in een incident.

Weet wat de naburige bestanden niet zijn

Een certificaat is geen versleutelde publieke sleutel die de tegenpartij met het CA-certificaat ontgrendelt; het is een ondertekende binding tussen een publieke sleutel en identiteitsgegevens. De privé-ondertekeningssleutel van de CA blijft gescheiden van zijn eigen certificaat en van elke clientsleutel. Een aanvraag is ook geen certificaat: hij draagt de gevraagde informatie en de publieke sleutel met een ondertekening over de aanvraag, waardoor het inschrijvingsinvoer is en geen bewijs van recht.

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

Twee van die regels worden vaak genoeg met RSA-parameters verward om ze twee keer te noemen. Een Diffie-Hellman-parameterbestand bevat groepsparameters voor sleutelvestiging en geen RSA-priemgetallen, hoewel het ook als een groot priemgetal wordt afgedrukt. Een intrekkingslijst publiceert de status van certificaten en is geen plek waar een privé-exponent zich zou kunnen verstoppen.

Elke inventarisregel zou daarom vier dingen moeten vastleggen: objecttype, eigenaar, doel en of privémateriaal is inbegrepen. De laatste kolom bepaalt waar het bestand mag worden gekopieerd, en dat is degene die mensen overslaan.

Leg de koppeling vast en verifieer dan de handshake

Voordat je iets wijzigt, sla je de verificatie-uitvoer op met de datum en de OpenSSL-versie. Een latere rotatie kan dan met bewijs worden vergeleken in plaats van met geheugen.

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

Na de vergelijking van de publieke sleutel doorloop je het pad dat het paar verbruikt: breng de tunnel omhoog, bevestig dat het certificaat wordt aangeboden en geaccepteerd, en controleer welke identiteit de gateway heeft vastgelegd. Als de sleutel en het certificaat overeenkomen en authenticatie toch mislukt, zit de fout in vertrouwen, identiteitstoewijzing of toegangsbeleid en niet in de koppeling.

Bewaar voor terugdraaien de vorige sleutel en het certificaat in een map met datum en herstel beide samen, nooit één van de twee. Een sleutel zonder certificaat en een certificaat zonder sleutel falen van buitenaf op dezelfde manier, wat half herstelde paren duur maakt om om twee uur 's nachts te ontwarren.

Gerelateerde artikelen