Sjølvsignert VPN-sertifikat: kva det tyder og kva det stolar på
Eit sjølvsignert VPN-sertifikat krypterer framleis trafikken. Det som endrar seg, er kven du har bede om å stole på det, kva lager som tek imot den tillita, og kva kontrollar som står att.
To overtydingar gjer mest skade her: at eit sjølvsignert VPN-sertifikat tyder at tunnelen ikkje er kryptert, og at installasjon av kva VPN-klienten enn ba om berre påverkar VPN-en. Ingen av dei overlever møtet med ein ekte utrulling. Eit sjølvsignert sertifikat skildrar eit signaturtilhøve, ikkje ein tryggleiksdom, og rekkjevidda til tillita du legg til, avheng av kva lager ho landar i. Eg har sett ein helpdesk importere ei leverandørrot i ein Windows-maskin for å dempe éi åtvaring, og deretter bruke ein ettermiddag på å forklare kvifor nettlesaren slutta å klage på ein urelatert portal. Dei to halvdelane av dette spørsmålet høyrer saman, så handsam dei som eitt.
Eit sertifikat er ikkje eit tillitslager
Fila serveren presenterer, ber ein offentleg nøkkel, eit subjektnamn, eit utgivarnamn, gyldigheitsdatoar og utvidingar. Sjølvsignert tyder at subjektet og utgivaren er same eining, og signaturen vert verifisert med sertifikatet sin eigen nøkkel. Ingenting i den definisjonen seier at sambandet er svakt, og ingenting seier at klienten vil godta det.
Godtaking kjem frå ein annan stad: ei CA-fil du peikar klienten mot, eit fingeravtrykk du samanliknar for hand, eller ei rot som allereie ligg i eit lager klienten les. Ei utrulling kan vere heilt sunn medan sertifikatet ville stryke på kvar offentleg test. openssl verify mot systembunten vil rapportere ein ukjend utgivar, og den rapporten er korrekt, ikkje ein feil.
OpenVPNs ca-val er det klåraste tilfellet av app-avgrensa tillit. Den fila namngjev ankerpunkta klienten vil godta, og ho kan innehalde éin privat CA eller, i ei lita utrulling, serveren sitt eige sjølvsignerte sertifikat. Versjon 2.6 godtek òg --peer-fingerprint for å feste eit SHA-256-fingeravtrykk i staden for å distribuere ei CA-fil. WireGuard ligg endå lenger ute: det har ingen sertifikat i det heile, berre ein statisk offentleg nøkkel per peer, så spørsmålet om sjølvsignering passar ikkje på det.
Kvar du installerer tillit, avgjer kven som arvar ho
Set det same sertifikatet tre stader, og du får tre ulike eksplosjonsradiar. Ein bunt som berre VPN-klienten les, påverkar den klienten. Ei rot i lageret til operativsystemet påverkar kvart program som rådspør det lageret. Ein nettlesar med sin eigen tillitsdatabase kan ignorere begge, og difor kan ei åtvaring overleve ein import som såg ut til å verke.
På Debian eller Ubuntu endrar det systembunten å sleppe ei fil i /usr/local/share/ca-certificates/ og køyre update-ca-certificates. På Windows skriv certutil -addstore -f Root til maskinlageret og krev ei forhøgd ledetekst, medan å leggje til -user i staden rettar seg mot lageret til den gjeldande brukaren; dei to er ikkje utskiftbare. Firefox held sin eigen NSS-database, så ein import på OS-nivå vert kanskje aldri synleg der.
Omfanget tyder noko på grunn av kva ein styresmakt kan gjere. Ein utgivande CA kan signere for namn han ikkje har noko tilhøve til, så alt som stolar på det lageret, godtek desse signaturane. Eit einskilt fest blad kan ikkje gjere det; det autentiserer nøyaktig éin peer-identitet. Om målet er å få éin VPN til å kople til, når ein app-avgrensa CA eller eit fest blad det, medan ei maskinvid rot er ei langt større innrømming enn symptomet krev.
Du krypterer framleis utan ein offentleg CA
TLS-handtrykket utleier sesjonsnøklar uansett om peer-sertifikatet kjedar til noko du allereie stolar på. Sjølvsignert tyder ikkje klartekst, og det tyder ikkje at trafikken er lesbar undervegs. Det tyder at klienten ikkje har noka a priori grunn til å tru at nøkkelen høyrer til serveren han ba om.
Det er i det gapet ekte åtak lever. Ein klient som er konfigurert til å godta eit kva sertifikat som helst, anten gjennom ei deaktivert verifiseringsinnstilling eller ein stol-på-det-likevel-knapp som er klikka éin gong og gløymd, vil krypte gladeleg til den som svarar. Avlyttinga skjer i autentiseringstrinnet, før applikasjonsdata flyttar seg. Kryptering utan identitetskontroll held ein passiv observatør ute og gjer lite anna.
Tillit til utgivaren hoppar ikkje over namnekontrollen
Kjedevalidering, namnematching og føremålet med sertifikatet er separate avgjerder. Ein kjede kan vere gyldig medan namnet er feil, og eit namn kan matche medan sertifikatet vart gjeve ut for ei anna rolle. RFC 5280 definerer felta som ber desse avgrensingane, og kor strengt ein klient handhevar dei, er ei sak for kvar applikasjon.
OpenVPN gjer oppdelinga synleg. verify-x509-name festar det forventa subjektet gjennom name, name-prefix eller subject-matching. remote-cert-tls server krev at peer-sertifikatet kan brukast som server-sertifikat, noko som avviser eit klient-berre-sertifikat sjølv når utgivaren er klarert. Ingen av innstillingane vert erstatta av å sende ei CA-fil.
Undersøk sertifikatet før du avgjer noko:
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltNameviser kven som gav det ut, for kva namn og til når.openssl verify -CAfile ca.crt server.crtsjekkar om kjeda du planlegg å sende faktisk validerer bladet.openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_errorverkar for TLS-endepunkt som ein nettportal; OpenVPN-protokollen på 1194 er ikkje ein vanleg TLS-straum, så den testen gjeld ikkje der.
Eit sertifikat med utløpt dato, utan subjectAltName for namnet du koplar til, eller utan serverAuth-bruk, feilar uansett kor nøye ankeret vart installert.
Fem kontrollar før du godtek eitt
Samanlikn fingeravtrykket over ein kanal som ikkje er sambandet du prøver å reparere: ein konsoll, eit installasjonsprogram du allereie har, ei signert konfigurasjonsfil. openssl x509 -in server.crt -noout -fingerprint -sha256 på serveren og same verdi i klientloggen er nok til å vite at du ser på eitt objekt.
Deretter avgjer du kva du installerer: eitt blad eller ei styresmakt som kan prege fleire. Så avgjer du kvar det skal hen, og namngjev applikasjonane som les det lageret. Skriv ned fjerningsvegen medan du framleis hugsar han, for stol-på-det-og-gå-vidare er korleis ein mellombels import vert permanent.
Til slutt, planlegg endringa. Eit fest sertifikat eller fingeravtrykk må oppdaterast gjennom same klarerte kanal når sertifikatet roterer, og ein privat CA har sin eigen livssyklus for utgiving og tilbakekalling. Om den private nøkkelen lek, reparerer det ingenting å stole på ein kopi av same sertifikat igjen; identiteten må erstattast.
Om ei åtvaring overlever alle fem kontrollane, er det nyttige spørsmålet ikkje kva knapp som dempar ho, men kva lager klienten faktisk les, og kvar den rota kom frå. Svar på det, og importen du er i ferd med å gjere, vert ei avgjerd i staden for ein refleks.