Como remover um certificado VPN obsoleto de um armazenamento de confiança
Eliminar um perfil VPN deixa o certificado no sistema operativo, no browser ou na loja de aplicações. Compare pela impressão digital, elimine a cópia mais estreita e depois verifique a cadeia.
O seu cliente VPN está desinstalado, o perfil desapareceu das Definições e o túnel continua a subir com as credenciais antigas. Ou elimina-o, reinicia e encontra-o de volta na manhã seguinte. Nenhuma destas situações é um botão de eliminar avariado. Um perfil é configuração; um certificado é material de chave mais uma decisão de confiança registada num armazenamento para o qual o perfil apenas aponta. Qual dos dois tem em mãos decide o que 'remover' tem de significar.
Um perfil não é um certificado
Numa configuração VPN, três objetos diferentes são chamados 'o certificado'. A identidade do cliente é um certificado folha com uma chave privada, e o gateway usa-o para decidir quem é. O certificado folha do próprio servidor e o seu intermédio são o que o seu cliente verifica ao ligar-se. A âncora de confiança, normalmente um certificado de raiz ou de CA privada, é o que torna a cadeia verificável. RFC 5280 chama a estes a âncora de confiança, o intermédio e a entidade final, e a cadeia só é válida enquanto cada elo assinar o elo abaixo.
Elimine a identidade e um dispositivo perde o acesso. Elimine a âncora e todas as aplicações que validam contra esse armazenamento perdem a capacidade de verificar qualquer coisa emitida sob ele, incluindo ligações que nada têm a ver com a VPN. Essa assimetria é todo o risco aqui: uma raiz instalada para um gateway é muitas vezes a mesma raiz que assina um portal interno, um servidor de correio ou um espelho de pacotes. Lembre-se de qual dos dois tem em mãos.
A propriedade decide se a eliminação fica eliminada. Num portátil que possui, é o único que pode repor o certificado. Num dispositivo gerido, um perfil de configuração ou um payload MDM pode reinstalá-lo no próximo check-in, e é por isso que 'volta' e por isso eliminar com mais força não ajuda.
Descubra qual armazenamento ainda o guarda
As pessoas começam na aplicação Definições, que é o único sítio onde um certificado não é guardado. Os locais reais são os armazenamentos de confiança do sistema, o armazenamento próprio do browser e o armazenamento privado da aplicação.
| Store | What deleting from it affects |
|---|---|
| Windows CurrentUser\My | your login session only |
| Windows LocalMachine Root | every user and service on the machine |
| macOS login or System keychain | one account, or all of them with sudo |
| Linux ca-certificates bundle | curl, git, Python, anything using the system bundle |
| Firefox cert9.db | Firefox only; it does not read the OS store |
Compare pelo número de série ou pela impressão digital, nunca pelo nome apresentado. Os nomes apresentados são definidos por quem emitiu o certificado e são reutilizados: 'Example VPN' pode ser três certificados com três chaves diferentes, um deles ainda em uso diário.
certutil -user -store My
certutil -store Root
openssl x509 -in vpn-client.pem -noout -subject -issuer -serial -fingerprint -sha256
No macOS, a ferramenta security dá os mesmos factos, e find-identity mostra que certificados ainda têm uma chave privada associada:
security find-certificate -a -c "Example VPN" -Z /Library/Keychains/System.keychain
security find-identity -v -p ssl-client
Elimine o objeto estreito, mantenha o emissor partilhado
Exporte antes de eliminar. Sem cópia de segurança, a única recuperação é reemitir, o que numa CA privada significa voltar a quem gere a PKI. O PFX exportado é também o que entrega se a remoção se revelar a decisão errada.
certutil -user -exportPFX -p backup My <serial> C:\temp\vpn-id.pfx
certutil -user -delstore My <serial>
Remove-Item Cert:\CurrentUser\My<thumbprint>
A flag -user é a que as pessoas deixam cair por acidente. Sem ela, o certutil trabalha no armazenamento da máquina, o que significa uma shell elevada, um conjunto diferente de certificados e um raio de impacto que agora inclui todas as outras contas da máquina.
No macOS e no Linux a forma é a mesma: identificar, exportar e depois remover do armazenamento mais estreito que explica o sintoma. Remover o ficheiro em /usr/local/share/ca-certificates e voltar a correr update-ca-certificates é suficiente; --fresh só ajuda quando as ligações simbólicas em /etc/ssl/certs já estão inconsistentes. Os sistemas da família RHEL guardam as âncoras em /etc/pki/ca-trust/source/anchors, onde trust anchor --remove faz o mesmo trabalho.
sudo security delete-certificate -Z <sha1> /Library/Keychains/System.keychain
sudo rm /usr/local/share/ca-certificates/example-vpn.crt
sudo update-ca-certificates
sudo trust anchor --remove /etc/pki/ca-trust/source/anchors/example-vpn.crt
Antes de eliminar um certificado de CA, verifique o que mais se encadeia nele. Listar os sujeitos dentro do pacote é uma verificação de duas linhas e responde se essa âncora está a fazer outro trabalho:
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
| openssl pkcs7 -print_certs -noout | grep -i example
Eliminar o ficheiro não é revogar a identidade
Uma eliminação local remove uma cópia. A chave privada pode ainda estar num p12 anexado a um ticket antigo, numa pasta de cópias de segurança ou no segundo portátil configurado ao mesmo tempo. Se isto era uma identidade de cliente, o gateway continua a aceitar qualquer cópia dessa chave até a identidade ser recusada do lado do servidor.
Para uma OpenVPN PKI, isso significa revogar o certificado e garantir que a CRL referida por crl-verify está atualizada; easyrsa revoke e depois easyrsa gen-crl é a versão curta. Para um gateway ligado a um fornecedor de identidade, desative lá o utilizador ou remova o dispositivo, porque o certificado é apenas uma credencial em jogo. Eliminar a cópia local enquanto a conta continua ativa parece limpeza e não é.
O trabalho de incidente tem outra ordem: preserve primeiro o certificado, o seu número de série e o registo de revogação, e só depois elimine e revogue. Esses registos não custam nada e não exigem deixar uma credencial funcional no lugar.
Verifique com um handshake e uma segunda aplicação
Verifique a cadeia de fora, não a partir da lista do armazenamento que acabou de editar. O armazenamento mostra a sua edição; o handshake mostra o resultado.
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com \
-CAfile /etc/ssl/certs/ca-certificates.crt -verify_return_error < /dev/null
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt vpn-gateway.pem
Um código de retorno 0 significa que as âncoras restantes ainda validam o gateway. Um erro de cadeia depois de remover a âncora é o resultado esperado, e confirma que atingiu a âncora em uso e não um duplicado num armazenamento que o cliente nunca lê. Se a ligação ainda funcionar, procure uma segunda cópia, um armazenamento incorporado na aplicação ou um certificado fixado, tudo comum em clientes que trazem a sua própria lista de confiança.
Depois teste algo não relacionado: um site interno, um cliente de correio, um espelho de pacotes. Isso mede o raio de impacto de forma barata, antes de a janela de mudança fechar.
- Papel identificado como identidade, intermédio ou âncora de confiança
- Número de série e impressão digital registados, e a cópia exportada para o local aprovado
- Eliminação feita no âmbito mais estreito que explica o sintoma
- Autorização do lado do servidor revogada quando uma pessoa ou dispositivo saiu
- Handshake explicado, e uma aplicação não relacionada testada de novo
- Payload MDM ou perfil de gestão atualizado, ou o certificado volta
Se o certificado voltar depois de um reinício, a tarefa não está terminada: algo o possui e o reinstala. Encontre esse proprietário antes de eliminar outra vez, porque uma terceira eliminação comportar-se-á exatamente como as duas primeiras.