Que comproba o teu cliente VPN antes de confiar nun certificado
Percorre un aviso de certificado polas catro portas que comproba o teu cliente: confianza na CA, construción da cadea, nome e propósito do par, e política de revocación.
O teu cliente VPN di que o certificado non se puido verificar, e o diálogo remata aí. O ficheiro está, o servidor funciona, e o mesmo perfil funcionou noutro portátil o mes pasado. Baixo ese aviso dunha liña, o cliente pasou o certificado do par por catro portas: unha autoridade de certificación que configuras avala a ruta de sinatura, esa ruta chega á autoridade, o nome do par é o que pediches, e o certificado é utilizábel agora para este propósito. Atopa a porta que se pechou e a reparación adoita ser un ficheiro; salta ese paso e reimportarás paquetes toda a tarde.
Le o diálogo antes de editar o perfil
Os erros de certificado redáctaos a biblioteca de abaixo, non o produto VPN que instalaches, así que a cadea exacta é a túa primeira proba. «Non se pode obter o certificado do emisor local» apunta á ruta ou á áncora de confianza. «O certificado caducou ou aínda non é válido» apunta ao tempo. «Propósito do certificado non admitido» apunta ao uso estendido da chave. Un desaxuste de nome diche que nome quería. Ningún dos catro se repara reinstalando o cliente.
Sube o nivel de rexistro antes de cambiar nada. OpenVPN informa do fallo de verificación arredor do aperto de mans cando o executas con --verb 4, e strongSwan escribe as súas decisións de identidade e cadea no rexistro charon. Despois confirma que certificado estás inspeccionando, porque a xente adoita probar o ficheiro do disco mentres o perfil incrusta unha copia máis antiga. Cando o perfil incrusta bloques PEM, o certificado incrustado é o que se proba.
Unha autoridade de certificación asina identidades, non permisos
A autoridade garda un nome e unha chave de sinatura. Emite certificados que vinculan unha chave pública a ese nome segundo a súa propia política, cunha xanela de validez e restricións de uso adxuntas. O teu cliente só precisa o certificado da autoridade para recoñecer o emisor; nunca precisa a chave de sinatura, e enviar esa chave aos clientes daríalles a capacidade de acuñar calquera identidade na que confíe o despregamento.
Confiar nunha autoridade converte en candidato todo certificado que asinou, non no par correcto. Un certificado de servidor web da mesma CA interna tamén é candidato. Por iso existen as portas de nome e propósito, e por iso unha chave de CA comprometida importa máis que calquera servidor individual: alcanza cada identidade que a autoridade emitiu algunha vez. Entrega certificados de cliente por dispositivo, para que un portátil perdido sexa unha revocación e non unha rexeneración de chaves en todo o despregamento.
Reconstrúe a ruta que o cliente intenta construír
A ruta vai do certificado do par, a través de cero ou máis intermedios, ata unha raíz no teu almacén de confianza. Un intermedio ausente é o fallo de cadea máis común, e desde o lado do cliente vese idéntico a unha raíz non confiábel. Le primeiro a folla e despois deixa que OpenSSL constrúa a ruta co material que pensas enviar.
openssl x509 -in server.crt -noout -subject -issuer -dates
openssl verify -CAfile root.crt -untrusted intermediate.crt server.crt
openssl verify -show_chain -CAfile root.crt -untrusted intermediate.crt server.crt
Un estado de saída cero significa que a ruta se construíu con eses ficheiros; un fallo nomea o certificado que non puido alcanzar. Se openssl verify ten éxito mentres o cliente segue negándose, a diferenza está no que o servidor envía realmente ou en que ficheiro de confianza carga o perfil. En OpenVPN, os intermedios poden viaxar co ficheiro do certificado do servidor ou entregarse por separado con --extra-certs, e un paquete con dúas raíces escritas baixo o mesmo nome de suxeito enviará a un dos teus clientes pola rama equivocada.
O nome e o propósito son portas separadas
A construción da cadea nunca pregunta se o nome é teu. OpenVPN só o comproba cando o perfil define --verify-x509-name, e o vello costume de cotejar só o nome común rompe con certificados cuxas identidades viven en subjectAltName. Os despregamentos IKEv2 cotejan a identidade configurada coas entradas SAN ou co nome distinguido, segundo o cliente, e un valor comodín ou %any desactiva en silencio a comparación que crías ter.
Despois veñen o tempo e o propósito. Un portátil cuxo reloxo vai unhas horas adiantado rexeita un certificado que aínda non é válido, e un intermedio caducado fai fallar a ruta mentres a folla está vixente. Os fallos de propósito veñen dun certificado sen serverAuth no uso estendido da chave, ou cun keyUsage que non permite a sinatura do aperto de mans, o que OpenSSL informa como propósito de certificado non admitido. Reemite desde o modelo correcto; nada nesa mensaxe é motivo para desactivar a verificación.
A revocación só funciona se alguén a configurou
Unha CRL ou unha resposta OCSP non se consultan automaticamente. Nun servidor OpenVPN, os certificados de cliente compróbanse contra unha lista só cando --crl-verify apunta a unha. A comprobación do certificado do servidor por parte do cliente depende da implementación e a miúdo non existe. strongSwan necesita o seu complemento de revocación e unha política antes de mirar unha CRL para un par.
Iso explica o ticket que acabarás recibindo: un certificado de cliente revogado segue conectándose, e todos conclúen que a revocación está rota. Nada estaba comprobando. Publica e refresca a CRL, ou mantén os certificados de cliente tan efémeros que unha revocación obsoleta importe pouco tempo, e ensaia a ruta de revocación cun certificado de laboratorio antes de necesitala durante un incidente.
Unha orde de reparación que mantén a verificación activa
Ordena por síntoma antes de tocar ficheiros, porque cada fila da táboa che envía a un obxecto distinto.
| Client says | Most likely gate | First check |
|---|---|---|
| unable to get local issuer certificate | trust anchor or missing intermediate | your own openssl verify against the files the profile loads |
| expired or not yet valid | validity window | leaf and intermediate dates against the device clock |
| unsupported certificate purpose | extended key usage | serverAuth present, keyUsage allows the handshake |
| name mismatch | peer identity | subjectAltName entries versus the profile name |
Percorre a lista nunha pasada: confirma o ficheiro que carga o perfil, constrúe a ruta ti mesmo, comproba que o servidor envía o intermedio, compara o reloxo, le o SAN, le o EKU, e despois reconecta e observa como desaparece a mesma liña de rexistro. Se a un dispositivo non se lle pode dar ningunha CA, o pinning é a alternativa honesta, porque OpenVPN 2.6 acepta --peer-fingerprint e reduce a confianza a unha chave en lugar de eliminar a comprobación. RFC 5280 é a referencia de que significa cada un deses campos.