Esse tutorial demonstra de forma prática como revogar um certificado de um usuário no servidor OpenVPN.
É muito comum, quando estamos lidando com VPNs empresariais, a saída de funcionários da empresa e que por consequência não deveriam mais ter acesso a VPN. Além disso, um usuário pode ter esquecido sua senha ou mesmo ter a private key exposta.
Portanto, torna-se uma necessidade básica no dia a dia de uma empresa saber como revogar um certificado de forma correta e precisa.
Nesse tutorial, estamos usando um servidor OpenVPN que está instalado em uma máquina Linux. Além disso, como prova de conceito, vamos usar um cliente OpenVPN com um usuário Alice.
Além disso, estamos usando o mesmo cenário que usamos no artigo:
- Revogando o certificado no OpenVPN
- Gerando o CRL (certificate revocation list)
- Copiando o arquivo de CRL (certificate revocation list)
- Editando o arquivo de configuração do OpenVPN
- Reiniciando o servidor OpenVPN
- Testando o certificado OpenVPN revogado
- Minha opinião sobre VPNs e automatização
- Veja mais:
Revogando o certificado no OpenVPN
O primeiro passo para revogar um certificado é entrar no diretório que contém o arquivo easyrsa. Em nossa instalação prévia do OpenVPN Server, o arquivo easyrsa está no diretório easy-rsa. Portanto, para acessá-lo vamos usar o comando abaixo.
cd ~/easy-rsa/
Depois disso, vamos usar o comando easyrsa revoke para revogar o certificado do usuário Alice. Para isso vamos usar o comando abaixo.
./easyrsa revoke Alice
O sistema vai perguntar se deseja continuar e vamos digitar yes e depois pressionar ENTER.
Gerando o CRL (certificate revocation list)
Agora vamos gerar um CRL (certificate revocation list) para que a revogação do certificado da Alice tenha efeito. Ao usar o comando “./easyrsa gen-crl“ será criado um arquivo de lista de revogação de certificado chamado “crl.pem”.
./easyrsa gen-crl
Podemos ver que o arquivo crl.pem foi criado dentro do diretório “~/easy-rsa/pki/”. Se desejarmos verificar, podemos usar o comando abaixo para entrar no diretório e depois usar o comando “ls” para listar o conteúdo do diretório.
Dessa forma, vamos ver que agora temos o arquivo de lista de revogação de certificado chamado “crl.pem”.
cd ~/easy-rsa/pki/
ls
Copiando o arquivo de CRL (certificate revocation list)
Agora vamos copiar o arquivo CRL ( lista de certificado de revogação) “crl.pem” para o diretório de configuração do openvpn. Para isso, vamos usar o comando abaixo.
sudo cp crl.pem /etc/openvpn/server/
Editando o arquivo de configuração do OpenVPN
Agora, vamos editar o arquivo de configuração do servidor OpenVPN para identificar o arquivo de CRL (certificate revocation list). Para isso, vamos usar o comando abaixo para editar o arquivo “/etc/openvpn/server/server.conf” usando o editor de textos nano.
sudo nano /etc/openvpn/server/server.conf
Ao final do arquivo “server.conf”, vamos inserir uma linha que indica a verificação do CRL (certificate revocation list). Portanto, devemos copia a instrução abaixo e colar no final do arquivo de configuração “server.conf”.
crl-verify crl.pem
Reiniciando o servidor OpenVPN
Agora vamos reiniciar o servidor OpenVPN para que as alterações tenham efeito.
Para isso, vamos usar o comando abaixo.
sudo systemctl restart [email protected]
Testando o certificado OpenVPN revogado
Agora vamos testar se o usuário ainda consegue usar o certificado revogado do OpenVPN. Para isso, vamos na máquina cliente e vamos tentar conectar na VPN com o usuário Alice.
Em nosso caso, como estamos usando uma máquina Linux como cliente, usaremos o comando abaixo para fazer a conexão do usuário na VPN.
sudo openvpn --config Alice.ovpn
Podemos observar que o usuário Alice não conseguiu conectar na VPN e além disso, apareceram erros de “TLS key negotiation failed to occur” e também “TLS handshake failed”. Consequentemente, podemos verificar que depois de revogar o certificado do usuário Alice, esse usuário não consegue mais entrar na VPN.
Minha opinião sobre VPNs e automatização
Gosto muito de automatizar o processo de revogação de certificado. Isso porque no dia a dia devemos sempre tentar simplificar a vida dos responsáveis por inserir novos usuários na VPN e removê-los.
Certa vez, me lembro de estar em uma empresa de computação que produzia softwares para dispositivos integrados em TVs. Em uma tarde de sexta feira, fomos informados que haveria uma fusão da empresa com outra empresa que até o momento era concorrente.
Nossa equipe, ficou encarregada de realizar a migração da base de usuários de modo que na segunda feira os impactos no trabalho fossem reduzidos. Nesse caso, tínhamos um desafio que era como atualizar os acessos dos usuários da empresa original e também adicionar usuários da empresa que estava se fundindo com a nossa.
Inicialmente, tentamos realizar o procedimento de revogar certificados e criar usuários no OpenVPN de forma manual. No entanto, percebemos rapidamente que esse processo poderia levar mais tempo do que nos era delimitado. Foi então que um colega deu a ideia de criar shell script para revogar todos os certificados de VPN que precisavam ser atualizados e dentro do mesmo script criar novos certificados para a grande lista de funcionários que nos haviam entregado.
Então, resolvemos seguir a ideia de nosso colega e passamos um tempo criando o script e validando. E para nossa surpresa, o script ficou pronto mais rápido do que o esperado e pudemos adicionar usuários a VPN e revogar certificados de forma ágil e reduzindo a probabilidade de erro humano. Dessa forma, um trabalho que era para ser entregue em 3 dias foi feito em apenas uma manhã de sábado.
Esse foi somente um episódio de minha vida trabalhando com tecnologia da informação, espero que ajude.
Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer
Tutorial Instalar VNC em Linux Ubuntu
O acesso remoto é uma ferramenta indispensável para administradores e usuários que precisam gerenciar servidores…
Tutorial: Instale seu Servidor DNS no Linux com Bind9 Passo a Passo
Nesse tutorial vamos dar todo o passo a passo para que você instale uma configuração…
SSH: Como criar chave pública
Nesse tutorial vamos ensinar a criar e configurar o acesso a um servidor SSH usando…
Socket em Python criando chat UDP
Tutorial para a criação de um chat simples utilizando sockets em UDP em Python 3….
Socket em Python, criando um Chat
Tutorial para a criação de um chat simples utilizando sockets TCP em Python 3. O…
Como usar apt get com proxy
Ao longo dos tempos sempre me deparo nos laboratórios de rede com a necessidade de…