Reemitir un certificado de portátil co mesmo nome común parece unha substitución, e todo o mundo asume que o anterior morreu. Non é así. O predecesor segue sendo un certificado válido asinado pola mesma autoridade, e calquera control que admita clientes polo nome seguirá admitíndoo. O que separa unha comprobación de identidade dunha comprobación de credenciais é o número de serie, e aí é onde corresponde a corrección.

Comece pola política de nomes que usa o servidor

Confúndense dous controis: admitir un cliente por quen di ser e retirar do servizo un certificado concreto. O primeiro é unha comprobación de nome; o segundo, unha comprobación de revocación. Responden a preguntas distintas, e unha implantación pode ter un sen o outro.

Lea a configuración do servidor e anote que fonte de identidade está en xogo. username-as-common-name converte o nome de usuario autenticado no nome efectivo para as buscas específicas de cada cliente. Sen el, úsase o nome común do suxeito do certificado. Calquera que sexa a resposta, anótea antes de tocar calquera lista de permitidos.

Os dous camiños producen un conxunto distinto de nomes permitidos para o mesmo certificado. Adiviñar aquí significa editar o ficheiro equivocado e concluír que o control non funciona.

Comprobe que admite realmente un cliente

Un client-config-dir cun ficheiro coincidente fornece opcións por cliente; por si só non é unha regra de admisión. A admisión polo nome require ccd-exclusive, que rexeita os clientes que non teñen un ficheiro coincidente. Activalo nunha implantación en produción desconecta a todos cuxo nome non teña ficheiro, así que conte os ficheiros antes de cambiar nada.

grep -nE 'ccd-exclusive|client-config-dir|username-as-common-name' /etc/openvpn/server/server.conf
ls -1 /etc/openvpn/ccd/

A conta é a comprobación: compare a listaxe do directorio coas identidades que espera que se conecten.

Logo confirme que cada nome de ficheiro coincide exactamente coa identidade efectiva, incluíndo maiúsculas e minúsculas e espazos. Un ficheiro para office-laptop non fai nada por un certificado cuxo suxeito di Office-Laptop. Os espazos finais tamén se agochan dunha listaxe simple, e así un ficheiro que parece presente queda sen ler.

Comprobe a CRL que carga a pasarela

Unha CRL nomea os certificados revogados por emisor e número de serie, que é a granularidade da que carece unha comprobación de nome. Dous certificados poden compartir un nome común e diferir no número de serie, e só unha lista a nivel de número de serie os separa.

Confirme a ruta configurada, a data de emisión e o campo de próxima actualización antes de confiar no ficheiro.

openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
openssl x509 -in office-laptop.crt -noout -serial -subject

Compare o número de serie da CRL co número de serie do certificado que pensa conservar. Esa comparación é toda a proba, e facela unha vez a ollo vale máis que confiar nun script que ninguén leu. Distribúa a CRL actualizada pola ruta que a pasarela xa le. Unha CRL no directorio equivocado non impón nada, e ningún rexistro de cliente o mencionará.

Substitúa e logo demostre ambos os resultados

Emita a substitución co mesmo nome común, rexistre ambos os números de serie e só entón revogue o antigo. Esa orde mantén dispoñible unha identidade funcional mentres prepara o cambio.

Probe primeiro a substitución: debería autenticarse e chegar a todo aquilo a que ten dereito o seu nome. Logo probe o certificado antigo e confirme que se rexeita, porque unha substitución correcta non di nada sobre a revocación. Se ambos seguen conectándose, a entrada de revocación non se está lendo ou o número de serie antigo nunca se incluíu. Se ningún se conecta, rompeu a regra de admisión, non a credencial.

As sesións xa establecidas son outra cuestión, xa que a revocación se aplica a autenticacións novas a menos que a pasarela tamén estea configurada para cortar conexións activas. Decida se se require unha retirada inmediata antes de prometela a alguén.

O que unha comprobación de nome nunca pode facer

Unha lista de permitidos responde se esta identidade pode conectarse. Non pode dicir que certificado usou esa identidade, e admitirá unha credencial máis antiga mentres a credencial siga sendo válida e non revogada. Esa lagoa aparece durante un incidente, cando a substitución se emitiu hai meses e o predecesor aínda funciona.

Onde se require control a nivel de certificado, use un mecanismo que nomee o certificado: entradas de CRL ou un hook de verificación que comprobe unha impresión dixital que manteña o operador. Ambos custan mantemento, e ambos son honestos sobre o obxecto que examinan. O manual de OpenVPN 2.6 documenta crl-verify e a admisión específica de cliente como opcións separadas por esa razón.

Anote que control fai que traballo e logo probe o caso negativo. Unha revocación que nunca viu rexeitar unha conexión é unha configuración que espera que funcione.

Artigos relacionados