Selvsignert klientcertifikat? VPN-serveren avviser det fortsatt
Et klientcertifikat må kjede til CA-en serveren stoler på, og et selvsignert gjør det aldri. Her er hva en CSR kan gjøre, og hva du bør be om.
Operatøren sender en adresse og et brukernavn, og klienten ber om en CA-fil, et sertifikat og en nøkkel. Å generere disse tre lokalt føles som det åpenbare neste trinnet. Det gir et sertifikat som bare din egen maskin tror på. Serverens tillit er forankret i en CA du ikke kontrollerer, så håndtrykket slutter før det begynner.
Tillit bor på serveren, ikke i profilen din
Sertifikatautentisering er en sammenligning. Klienten legger fram et sertifikat; gatewayen sjekker om det er signert av en av CA-ene i konfigurasjonen.
Profilen din oppgir CA-filen klienten skal bruke for å verifisere serveren. Den kan ikke oppgi en CA serveren skal bruke for å verifisere deg. Den halvdelen av konfigurasjonen er ikke din.
Et hjemmelaget sertifikat feiler i denne sammenligningen selv når det er teknisk perfekt. Det har en gyldig signatur, et subjekt og datoer, men utstederen er en CA gatewayen aldri har hørt om. Feilen vises under håndtrykket, etter at serveren allerede har bedt om et sertifikat. Ingenting i klientprofilen kan endre svaret.
Hvorfor et selvsignert sertifikat ikke kan erstatte det
Et selvsignert sertifikat er signert med sin egen nøkkel. Signaturen verifiseres mot samme fil, noe som gjør det selvkonsistent og ubrukelig som legitimasjon for en annens gateway.
Gatewayen spør ikke om sertifikatet er internt konsistent. Den spør om en betrodd utsteder har signert det.
Derfor er feilmeldingene forvirrende. Klienten kan rapportere en verifiseringsfeil som høres ut som et serverproblem, mens serveren logger en ukjent utsteder. Begge beskriver den samme uoverensstemmelsen fra hver sin ende.
CSR-veien beholder din private nøkkel
Du kan fortsatt gjøre det meste av arbeidet lokalt. Generer et nøkkelpar, bygg en forespørsel om sertifikatsignering rundt den offentlige halvdelen, og send forespørselen til operatøren. Bare forespørselen forlater maskinen din. Den private halvdelen blir der du genererte den.
openssl req -new -newkey rsa:3072 -nodes -keyout client.key -out client.csr -subj "/CN=laptop-01"
Operatøren signerer forespørselen med CA-en sin og returnerer et sertifikat. Din private nøkkel har aldri reist, og resultatet kjeder til ankeret gatewayen stoler på.
Administrerte tjenester hopper ofte over CSR-en og utsteder hele pakken. Det er en rimelig byttehandel når samme leverandør allerede avslutter tunnelen og har CA-en. Nøkkelens oppbevaring blir ikke bedre av å beholde den, fordi leverandøren kan lage en ny når som helst.
Pakker importeres, de installeres ikke
Leverandørpakker med sikkerhetsklingende navn er ofte OpenVPN-profiler. De inneholder konfigurasjon og noen ganger sertifikater, og de installerer ingenting. Importer filen i en klient som snakker protokollen, og forbindelsen er konfigurert.
Håndteringsregelen følger av innholdet. Hvis profilen bygger inn en privat nøkkel, er det legitimasjon og fortjener samme omsorg som et passord: ingen e-post, ingen kodelager, ingen delt nedlastingsmappe. Når operatøren leverer ca.crt, client.crt og client.key separat, lagre dem sammen med restriktive tillatelser og pek profilen mot dem.
Legg til kontrollene operatøren kan ha hoppet over
En ruter-generert profil mangler noen ganger peer-verifisering. remote-cert-tls server krever at peer-sertifikatet bærer formålet serverautentisering, slik at et klientcertifikat ikke kan spilles av som server. Den ene linjen er en liten endring med klar begrunnelse.
verify-x509-name går lenger når operatøren kan oppgi forventet subjekt eller SAN. Begge er små tillegg til en profil, og begge er forsvarlige. Undersøk hva du mottok før du importerer det.
openssl x509 -in client.crt -noout -issuer -subject -dates
openssl verify -CAfile ca.crt client.crt
Verifiseringsinnstillinger er ikke en reparasjon av en brutt kjede. Hvis utstederen er feil, er svaret et sertifikat fra riktig CA, ikke et flagg som slår kontrollen av. Å slå av verifisering gjør en autentiseringsfeil til en uoppdaget feil.
Be om én pakke: myndighetens sertifikat som PEM, et klientcertifikat som myndigheten har signert, en nøkkel du har generert eller som kom gjennom en kanal du stoler på, og det nøyaktige servernavnet sertifikatet skal presentere. Noter utløpsdatoen i samme melding, fordi et utløpt sertifikat ser ut som en nettverksfeil måneder senere.