Importen feilar med ein sertifikatfeil, så det opplagde trekket ser ut som ein konvertering. Den instinkta sender folk ned ein veg der filtypen blir endra og avvisinga blir nøyaktig den same. Ei ssh-ed25519-linje i authorized_keys og eit OpenVPN-klientsertifikat er skilde legitimasjonsobjekt, med ulike utferdarar, ulike kodingar og ulike tilbakekallingsvegar. Går du gjennom desse kontrollane i rekkjefølgje, veit du innan eitt minutt om ein konvertering kan hjelpe i det heile.

Kva objekt har du eigentleg?

Det er fem ting folk kallar ein nøkkel, og berre éin av dei er det ein TLS-profil vil ha. Ein offentleg SSH-nøkkel er éi tekstlinje med eit typeprefiks og ein base64-nyttelast. Eit OpenSSH-sertifikat er den nøkkelen pluss ein signatur, principals og opsjonar, produsert av ssh-keygen som opptrer som sin eigen vesle CA. Eit X.509-sertifikat er ein heilt annan struktur, som ber eit subjekt, eit gyldigvindauge, utvidingar og ein signatur frå ein sertifikatstyresmakt. Ein privat nøkkel er den hemmelege halvdelen, og ein utstedt pakke er vanlegvis eit sertifikat pluss kjeda pluss den private nøkkelen i éi fil.

Den første testen kostar éin kommando. Rett openssl mot fila og be det tolke sertifikatstrukturen:

openssl x509 -in client.crt -noout -subject -issuer

Om det feilar med ein unable-to-load- eller PEM-feil, er fila ikkje eit X.509-sertifikat uansett kva du kalla henne. Ei omdøyping skriv ikkje om ASN.1-innhaldet, og det gjer heller ikkje innpakking av ei offentleg nøkkellinje i PEM-topptekst.

Ber profilen om eit sertifikat i det heile?

Klientsertifikat er éin autentiseringsmetode blant fleire, og mange fungerande TLS-profilar ber aldri om eitt. Ein tenar kan autentisere brukarar via eit programtillegg, eit brukarnamn og passord eller ein token-backend, medan han framleis krev at klienten stadfester identiteten til tenaren. Om profilen ikkje inneheld eit klientsertifikatdirektiv, vil det aldri bli bede om eit sertifikat, og ingen konvertering får gatewayen til å be om eitt.

Eldre konfigurasjonar med statisk nøkkel er eit tredje tilfelle. Dei går føre TLS-handtrykket og ventar ei fil med ein førehandsdel hemmelegheit, og difor kan det heller ikkje verke å lime inn ein offentleg nøkkel i det feltet. Les kva profilen faktisk ber om før du konkluderer med at legitimasjonen er feil.

Kva omkoding kan og ikkje kan gjere

Private nøklar har legitime alternative behaldarar. Den same RSA- eller EC-nøkkelen kan skrivast som tradisjonell PEM, som PKCS#8 eller inne i ein PKCS#12-pakke, og verktøy konverterer gjerne mellom dei. Offentlege nøklar har ei liknande historie: ssh-keygen kan skrive ut RFC 4716-forma av ein SSH-nøkkel, og OpenSSH forstår òg sitt eige sertifikatformat. Alt dette er representasjon, og representasjon er ikkje tillit.

Det ein konvertering ikkje kan, er å lage ein signatur frå ei sertifikatstyresmakt som aldri har sett nøkkelen din. Eit sertifikat er ein utferdar-påstand om at ein bestemt offentleg nøkkel høyrer til eit bestemt subjekt for eit bestemt føremål. Omkoding bevarer byta til nøkkelen og lèt påstanden mangle, så gatewayen har ingenting å validere mot tillitslageret sitt.

Dette er trinnet der dei fleste forsøk stille feilar: fila endar no på .crt, klienten les henne utan klagar, og handtrykket blir likevel avbrote fordi motparten ikkje kan byggje ei kjede til ein klarert utferdar.

Kvar sertifikatstyresmakta kjem inn i biletet

Ei ekte registrering startar med eit nøkkelpar du kontrollerer og ein sertifikatsignaturførespurnad som ber subjektet operatøren ventar. Operatøren stadfester retten, signerer førespurnaden med CA-nøkkelen og returnerer det utstelde sertifikatet saman med kvar mellomliggjande kjede klienten må leggje fram. Deretter treng klienten CA-sertifikatet som signerte det, fordi det er det som lèt han stadfeste at tenaren han snakkar med høyrer til same utrullinga.

Den siste fila er lett å gløyme og umogleg å erstatte. Sjølve CA-signeringsnøkkelen høyrer aldri heime i klientkonfigurasjonen, og inga mengd lokal konvertering produserer kjeda du skulle ha motteke.

Kva gjenbruk av SSH-nøkkelen kostar deg

Anta at ein konvertering faktisk produserte noko akseptabelt. Gjenbruk av eitt nøkkelpar til både SSH-tilgang og VPN-autentisering koplar framleis saman to uavhengige tryggleiksavgjerder. Fjerning av ei authorized_keys-oppføring stoppar SSH-innloggingar, og det gjer ingenting med eit sertifikat som VPN-CA-en allereie har utstedt for den same offentlege nøkkelen. VPN-sida blir tilbakekalla via sin eigen mekanisme, altså tilbakekallingslista til sertifikatet eller registreringsoppføringa til operatøren.

Så sjekklista endar med ein stoppbetingelse i staden for eit triks. Om openssl ikkje tolkar fila som eit sertifikat, stopp konverteringa og skildre kva du har: SSH-nøkkel, SSH-sertifikat, X.509-sertifikat, privat nøkkel eller pakke. Om profilen ikkje ber om eit klientsertifikat, stopp og spør kva autentiseringsmetode tenaren ventar. Berre når begge svara peikar på X.509, blir registreringa neste trinn, og den samtalen går mykje raskare med det rette substantivet i den første setninga.

Relaterte artiklar