Certificat VPN autosignat: què significa i en què confia
Un certificat VPN autosignat encara xifra el trànsit. El que canvia és a qui li heu dit que hi confiï, quin magatzem rep aquesta confiança i quines comprovacions queden.
Aquí fan més mal dos convenciments: que un certificat VPN autosignat significa que el túnel no està xifrat, i que instal·lar el que el client VPN hagi demanat només afecta la VPN. Cap dels dos no sobreviu al contacte amb un desplegament real. Un certificat autosignat descriu una relació de signatura, no un veredicte de seguretat, i l'abast de la confiança que afegiu depèn de en quin magatzem cau. He vist com un servei d'assistència importava una arrel de proveïdor en una màquina Windows per silenciar un avís, i després passava una tarda explicant per què el navegador havia deixat de queixar-se d'un portal sense relació. Les dues meitats d'aquesta pregunta van juntes, així que tracteu-les com una de sola.
Un certificat no és un magatzem de confiança
El fitxer que presenta el servidor porta una clau pública, un nom de subjecte, un nom d'emissor, dates de validesa i extensions. Autosignat vol dir que el subjecte i l'emissor són la mateixa entitat i que la signatura es verifica amb la clau pròpia del certificat. Res en aquesta definició no diu que la connexió sigui feble, ni res no diu que el client l'acceptarà.
L'acceptació ve d'un altre lloc: un fitxer CA al qual apunteu el client, una empremta que compareu a mà o una arrel que ja és en un magatzem que el client llegeix. Un desplegament pot ser perfectament sòlid mentre el seu certificat fallaria tots els tests públics. openssl verify contra el paquet del sistema informarà d'un emissor desconegut, i aquest informe és correcte, no una fallada.
L'opció ca d'OpenVPN és el cas més clar de confiança limitada a l'aplicació. Aquest fitxer anomena les àncores que el client acceptarà, i pot contenir una CA privada o, en un desplegament petit, el certificat autosignat del mateix servidor. La versió 2.6 també accepta --peer-fingerprint per fixar una empremta SHA-256 en lloc de distribuir un fitxer CA. WireGuard queda encara més enllà: no té cap certificat, només una clau pública estàtica per parell, així que la qüestió autosignada no s'hi aplica.
On instal·leu la confiança decideix qui l'hereta
Poseu el mateix certificat en tres llocs i obtindreu tres ràdios d'explosió diferents. Un paquet que només llegeix el client VPN afecta aquest client. Una arrel al magatzem del sistema operatiu afecta tots els programes que consulten aquest magatzem. Un navegador amb la seva pròpia base de dades de confiança pot ignorar tots dos, i per això un avís pot sobreviure a una importació que semblava funcionar.
A Debian o Ubuntu, deixar un fitxer a /usr/local/share/ca-certificates/ i executar update-ca-certificates altera el paquet de tot el sistema. A Windows, certutil -addstore -f Root escriu al magatzem de la màquina i necessita un intèrpret elevat, mentre que afegir -user apunta al magatzem de l'usuari actual; els dos no són intercanviables. Firefox manté la seva pròpia base de dades NSS, així que una importació a nivell d'SO pot no aparèixer mai allà.
L'abast importa pel que pot fer una autoritat. Una CA emissora pot signar noms amb els quals no té cap relació, així que tot el que confia en aquest magatzem acceptarà aquestes signatures. Una sola fulla fixada no pot fer-ho; autentica exactament una identitat de parell. Si l'objectiu és fer connectar una VPN, una CA limitada a l'aplicació o una fulla fixada ho aconsegueix, mentre que una arrel per a tota la màquina és una concessió molt més gran que la que exigeix el símptoma.
Encara esteu xifrant sense una CA pública
L'apretada de mans TLS deriva claus de sessió tant si el certificat del parell encadena amb alguna cosa en què ja confieu com si no. Autosignat no vol dir text pla, i no vol dir que el trànsit sigui llegible en ple vol. Vol dir que el client no té cap raó a priori per creure que la clau pertany al servidor que ha demanat.
En aquesta escletxa hi viuen els atacs reals. Un client configurat per acceptar qualsevol certificat, sigui amb una configuració de verificació desactivada o amb un botó de confia-hi-igualment premut una vegada i oblidat, xifrarà content a qui respongui. La intercepció passa en el pas d'autenticació, abans que es moguin les dades de l'aplicació. El xifratge sense comprovació d'identitat manté fora un observador passiu i fa poca cosa més.
Confiar en l'emissor no estalvia la comprovació del nom
La validació de la cadena, la concordança del nom i la finalitat del certificat són decisions separades. Una cadena pot ser vàlida mentre el nom és incorrecte, i un nom pot coincidir mentre el certificat es va emetre per a un altre paper. RFC 5280 defineix els camps que porten aquestes restriccions, i com de estricte és un client a aplicar-les és una qüestió de cada aplicació.
OpenVPN fa visible la separació. verify-x509-name fixa el subjecte esperat mitjançant la concordança de name, name-prefix o subject. remote-cert-tls server exigeix que el certificat del parell es pugui fer servir com a certificat de servidor, cosa que rebutja un certificat només de client fins i tot quan l'emissor és de confiança. Cap de les dues opcions no se substitueix enviant un fitxer CA.
Inspeccioneu el certificat abans de decidir res:
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltNamemostra qui el va emetre, per a quins noms i fins quan.openssl verify -CAfile ca.crt server.crtcomprova si la cadena que planeu enviar valida realment la fulla.openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_errorfunciona per a punts finals TLS com un portal web; el protocol OpenVPN al 1194 no és un flux TLS pla, així que aquesta prova no s'hi aplica.
Un certificat amb una data caducada, sense subjectAltName per al nom al qual us connecteu o sense l'ús serverAuth falla independentment de com de curosament s'hagi instal·lat l'àncora.
Cinc comprovacions abans d'acceptar-ne un
Compareu l'empremta per un canal que no sigui la connexió que intenteu reparar: una consola, un instal·lador que ja tingueu, un fitxer de configuració signat. openssl x509 -in server.crt -noout -fingerprint -sha256 al servidor i el mateix valor al registre del client són prou per saber que mireu un sol objecte.
Després, decidiu què instal·leu: una fulla o una autoritat que en pot encunyar més. Llavors decidiu on va, i nomeu les aplicacions que llegeixen aquest magatzem. Anoteu el camí de retirada mentre encara el recordeu, perquè confia-hi-i-tira-endavant és com una importació temporal es torna permanent.
Finalment, planifiqueu el canvi. Un certificat o una empremta fixats s'han d'actualitzar pel mateix canal de confiança quan el certificat rota, i una CA privada té el seu propi cicle de vida d'emissió i revocació. Si la clau privada es filtra, tornar a confiar en una còpia del mateix certificat no repara res; la identitat s'ha de substituir.
Si un avís sobreviu a les cinc comprovacions, la pregunta útil no és quin botó el silencia sinó quin magatzem llegeix realment el client i d'on va venir aquella arrel. Responeu això, i la importació que esteu a punt de fer es converteix en una decisió en lloc d'un reflex.