Um nome comum, dois certificados: lista de permitidos ou revogação?
Reemitir um certificado para o mesmo nome comum deixa o antigo válido. Uma lista de nomes não consegue distingui-los; só uma CRL ou verificação de número de série consegue.
Reemitir um certificado de portátil com o mesmo nome comum parece uma substituição, e todos assumem que o antigo está morto. Não está. O antecessor continua a ser um certificado válido assinado pela mesma autoridade, e qualquer controlo que admita clientes por nome continuará a admiti-lo. O que separa uma verificação de identidade de uma verificação de credencial é o número de série, e é aí que pertence a correção.
Comece pela política de nomes que o servidor usa
Dois controlos são confundidos: admitir um cliente por aquilo que afirma ser, e retirar de serviço um certificado específico. O primeiro é uma verificação de nome, o segundo é uma verificação de revogação. Respondem a perguntas diferentes, e uma implementação pode ter um sem o outro.
Leia a configuração do servidor e registe qual fonte de identidade está em uso. username-as-common-name torna o nome de utilizador autenticado o nome efetivo para pesquisas específicas do cliente. Sem isso, é usado o nome comum do titular do certificado. Qualquer que seja a resposta, escreva-a antes de tocar em qualquer lista de permitidos.
Os dois caminhos produzem um conjunto diferente de nomes permitidos para o mesmo certificado. Adivinhar aqui significa editar o ficheiro errado e concluir que o controlo não funciona.
Verifique o que admite realmente um cliente
Um client-config-dir com um ficheiro correspondente fornece opções específicas do cliente; por si só não é uma regra de admissão. A admissão por nome exige ccd-exclusive, que recusa clientes sem ficheiro correspondente. Ativá-lo numa implementação em produção desliga todos aqueles cujo nome não tem ficheiro, por isso conte os ficheiros antes de mudar seja o que for.
grep -nE 'ccd-exclusive|client-config-dir|username-as-common-name' /etc/openvpn/server/server.conf
ls -1 /etc/openvpn/ccd/A contagem é a verificação: compare a listagem do diretório com as identidades que espera que se liguem.
Depois confirme que cada nome de ficheiro corresponde exatamente à identidade efetiva, incluindo maiúsculas e espaços. Um ficheiro para office-laptop não faz nada a um certificado cujo titular se lê Office-Laptop. Os espaços no fim também se escondem de uma listagem simples, e é assim que um ficheiro que parece presente fica por ler.
Verifique a CRL que o gateway carrega
Uma CRL nomeia os certificados revogados por emissor e número de série, e é essa a granularidade que falta a uma verificação de nome. Dois certificados podem partilhar um nome comum e diferir no número de série, e só uma lista ao nível do número de série os separa.
Confirme o caminho configurado, a data de emissão e o campo da próxima atualização antes de confiar no ficheiro.
openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
openssl x509 -in office-laptop.crt -noout -serial -subjectCompare o número de série na CRL com o número de série do certificado que pretende manter. Essa comparação é todo o teste, e fazê-la uma vez a olho vale mais do que confiar num script que ninguém leu. Distribua a CRL atualizada pelo caminho que o gateway já lê. Uma CRL no diretório errado não impõe nada, e nenhum registo de cliente a mencionará.
Substitua, depois prove os dois resultados
Emita a substituição com o mesmo nome comum, registe os dois números de série e só então revogue o antigo. Essa ordem mantém uma identidade funcional disponível enquanto prepara a mudança.
Teste primeiro a substituição: deve autenticar-se e alcançar tudo aquilo a que o seu nome dá direito. Depois teste o certificado antigo e confirme que é recusado, porque uma substituição bem-sucedida nada diz sobre revogação. Se ambos ainda se ligarem, a entrada de revogação não está a ser lida ou o número de série antigo nunca foi listado. Se nenhum se ligar, quebrou a regra de admissão e não a credencial.
As sessões já estabelecidas são outra questão, porque a revogação aplica-se a novas autenticações, a menos que o gateway esteja também configurado para derrubar ligações ativas. Decida se a remoção imediata é necessária antes de o prometer a alguém.
O que uma verificação de nome nunca pode fazer
Uma lista de permitidos responde se esta identidade pode ligar-se. Não pode dizer qual certificado essa identidade usou, e admitirá uma credencial mais antiga enquanto a credencial continuar válida e não revogada. Essa lacuna aparece durante um incidente, quando a substituição foi emitida há meses e o antecessor ainda funciona.
Onde é necessário controlo ao nível do certificado, use um mecanismo que nomeie o certificado: entradas de CRL, ou um hook de verificação que confira uma impressão digital mantida pelo operador. Ambos custam manutenção, e ambos são honestos quanto ao objeto que examinam. manual do OpenVPN 2.6 documenta crl-verify e a admissão específica do cliente como opções separadas, precisamente por essa razão.
Escreva qual controlo faz que trabalho, e depois teste o caso negativo. Uma revogação que nunca viu recusar uma ligação é uma configuração com que está a contar.