Fråga om klientcertifikatet

Jag leker runt med OpenVPN och var nyfiken på certifikatdelen.

Jag tog en snabb titt på trafiken och såg inga skillnader när jag använder klientcertifikatet. Den enda skillnaden är att utan klientcertifikat får jag meddelandet “Connection Error - Missing external certificate”, men jag kan klicka på fortsätt och allt kommer att upprättas.

Är klientcertifikatet endast använt för ömsesidig autentisering?

Notering: Jag konfigurerade VPN för tvåvägsautentisering (användarnamn/lösenord). Några tankar om det? (Jag kommer nog att lägga till MFA inom de närmaste dagarna.)

Certifikat kan betraktas som ett “identitetsbevis”. Det innehåller en offentlig krypteringsnyckel + viss meta-data som är undertecknade av en CA. Signaturen kan verifieras genom CA-certifikatet (som i grunden är ett "identitetsbevis för den certifierande myndigheten "). Och du kan ha en certifikatkedja, om under-CAs är involverade - vilket är i stort sett hur webben fungerar.

I OpenVPN-sammanhang används ett klientcertifikat för att identifiera klienten för servern. På ett sätt kan användarnamn/lösenordautentisering faktiskt betraktas som en svagare form av klientautentisering _OM_ klientens privata nyckel är väl skyddad; vilket vanligtvis innebär att den lagras i en “certifikatsbutik” skyddad av operativsystemet eller på en hårdvaratoken (“smartcards”, nitrokey, yubikey, etc).

För de flesta webbplatser med centraliserad användarautentisering (LDAP, Kerberos, SAML/OAuth, etc), är detta generellt tillräckligt för VPN-klientautentisering. I dessa fall ger klientcertifikatet utöver den centraliserade användarautentiseringen inte mycket högre säkerhet.

Om du bara har användarnamn/lösenord-autentisering mot en lokal databas som inte blockerar inloggningsförsök baserat på misslyckade inloggningar och inte implementerar MFA, förbättrar klientcertifikat den övergripande säkerheten för VPN-anslutningen.

Vissa platser kan också tillhandahålla ett oberoende certifikat per enhet kopplat till användarnamn/lösenord-autentisering. Om en enhet förloras kan certifikatets utgivning för den enheten återkallas och det bör inte vara möjligt att ansluta med det certifikatet igen (så länge OpenVPN-servern får timely CRL - Certifikatsåterkallelse- listuppdateringar).

Men som du kan se, handlar detta om olika sätt för klientautentisering.

När autentisering och auktorisering i anslutningsuppsättningen är klar, utbyts en tillfällig sessionsnyckel (detta är där Diffie Hellman och relaterade algoritmer kommer in i bilden) och en krypteringsnyckel härleds (vilket involverar PRF-algoritmer). Denna nyckel används sedan för att kryptera nätverkstrafiken som passar över VPN-anslutningen. Och denna nyckel förhandlas om regelbundet (standard: var 60:e minut). Denna del av trafiken passerar i det som kallas datapunkten i OpenVPN-anslutningen, och den ändras inte alls oavsett om du använder klientcertifikat eller inte.

Byte av klient- och servercertifikat görs med TLS-protokollet över OpenVPN-anslutningen i det vi kallar " kontrollkanalen". Servercertifikatet skickas alltid, men klientcertifikatet är valfritt. Och det är denna kontrollkanal som också används för att överföra användarnamn/lösenord (efter att TLS-sessionen har etablerats korrekt), utöver nätverkskonfiguration, rutter, etc. När du inte använder klientcertifikat är TLS-handskaken lite annorlunda - men datan som överförs över TLS-sessionen i Kontrollkanalen är inte svagare eller starkare oavsett om du använder klientcertifikat eller inte. Klientcertifikat ger bara servern möjlighet att acceptera eller avvisa anslutningen i ett tidigare skede av anslutningsuppsättningen.