Introdução
O OpenVPN é uma solução de rede privada virtual (VPN) de código aberto que permite criar conexões seguras entre dispositivos, protegendo o tráfego de rede contra interceptações. Sua flexibilidade e suporte a criptografia forte o tornam ideal para empresas e usuários que precisam de acesso remoto seguro ou interligação entre redes.
Este artigo detalha o processo de instalação e configuração de um servidor e de um cliente OpenVPN no Linux, abordando também a criação de certificados digitais utilizando o script Easy-RSA. O processo de geração de certificados será apresentado de forma breve e técnica, com foco na aplicação prática para o funcionamento do OpenVPN.
Para um entendimento mais aprofundado sobre o gerenciamento de certificados, incluindo aspectos conceituais, critérios de segurança e detalhes sobre o uso do Easy-RSA, recomendamos a leitura do artigo complementar:
Ambiente de instalação
As configurações demonstradas neste artigo foram testadas no Slackware Linux 15.0 (64 bits), utilizando o OpenVPN 2.5.5 e o Easy-RSA 3.3.0.
Este tutorial pode ser adaptado para outras distribuições Linux com poucas modificações, principalmente no comando de instalação do OpenVPN e no método de inicialização automática do serviço. Sempre que possível, serão apresentados comandos específicos para diferentes distribuições, porém esses comandos não foram testados.
No restante, os passos para download do Easy-RSA, configurações e criação de certificados devem ser os mesmos na maioria das distribuições.
Instalação do OpenVPN
O OpenVPN está disponível nos repositórios oficiais do Slackware.
# bash
# Slackware
slackpkg install openvpn
Comandos para instalação em outras distribuições:
# bash
# Debian e Ubuntu sudo apt install openvpn # Fedora sudo dnf install openvpn # Arch Linux sudo pacman -S openvpn # openSUSE sudo zypper install openvpn
Download Easy-RSA
O Easy-RSA é um script que facilita a criação e o gerenciamento de chaves e certificados necessários para a comunicação segura entre cliente e servidor. O script deve ser executado como um usuário comum, sem a necessidade de permissões administrativas.
Por questões de segurança, o Easy-RSA será instalado em um pendrive, cujo caminho será representado aqui pelo ponto de montagem /mnt/usb. Utilizar um dispositivo removível permite manter a estrutura de gerenciamento de certificados offline, reduzindo riscos de exposição de chaves privadas. Para mais detalhes sobre as práticas de segurança envolvidas, consulte o artigo mencionado na introdução.
Para fazer o download do Easy-RSA diretamente no pendrive, utilize os seguintes comandos:
$ bash
cd /mnt/usb git clone https://github.com/OpenVPN/easy-rsa
Configurando EasyRSA
Antes de iniciar, é necessário ajustar o valor de algumas variáveis padrão dos scripts para garantir a consistência dos dados durante a emissão de certificados. Faça uma cópia do arquivo de exemplo vars.example para vars:
$ bash
cd easy-rsa/easyrsa3/ cp vars.example vars vi vars
Agora, personalize o arquivo vars com seu editor favorito. Remova o comentário das linhas abaixo e configure com suas informações:
vars
# Campos organizacionais set_var EASYRSA_REQ_COUNTRY "BR" # Pais set_var EASYRSA_REQ_PROVINCE "São Paulo" # Estado set_var EASYRSA_REQ_CITY "Rinópolis" # Cidade set_var EASYRSA_REQ_ORG "Minha empresa LTDA" # Nome da organização set_var EASYRSA_REQ_EMAIL "contato@minhaempresa.com.br" # E-mail set_var EASYRSA_REQ_OU "Departamento de TI" # Unidade Organizacional # Expiração (em dias) set_var EASYRSA_CA_EXPIRE 7300 # Validade da CA set_var EASYRSA_CERT_EXPIRE 3650 # Validade dos certificados emitidos
O primeiro conjunto de variáveis refere-se aos campos organizacionais, valores que serão incorporados aos certificados emitidos. O segundo conjunto de variáveis define o tempo de expiração do certificado da (CA) e dos certificados gerados para o servidor e clientes da VPN.
As demais variáveis presentes no arquivo vars só devem ser alteradas com conhecimento prévio de suas funções e não serão abordadas neste artigo.
Executando o Easy-RSA
O script easyrsa está localizado em easy-rsa/easyrsa3, a partir do diretório inicial clonado com o comando git. O formato básico de execução do comando é:
./easyrsa comando [ opções ]
Onde comando é o nome do comando a ser executado e opções são os parâmetros que personalizam o comando. Para obter ajuda sobre um comando específico use:
./easyrsa help [ comando ]
Quando executado sem nenhum parâmetro, o script ./easyrsa exibirá uma lista de comandos disponíveis.
Iniciando a PKI
Em português, PKI significa Infraestrutura de Chaves Públicas. Este passo cria a estrutura básica de diretórios necessários para o gerenciamento das chaves e certificados. Execute o comando ./easyrsa init-pki.
$ bash
# Acesse o diretório do EasyRSA cd /mnt/usb/easy-rsa/easyrsa3/ # Inicie a PKI ./easyrsa init-pki
Com a Infraestrutura de Chaves Públicas criada, você está pronto para criar uma Autoridade Certificadora (CA). Observe que foi criada uma nova pasta chamada pki/ na qual serão armazenadas, entre outras coisas, as requisições, as chaves privadas e os certificados emitidos.
Criando sua própria Autoridade Certificadora (CA)
Uma CA é a entidade responsável por emitir e gerenciar certificados digitais, que garantem a segurança e a autenticidade nas comunicações online.
Durante a criação da chave privada da CA, será solicitado uma senha a partir da qual a criptografia do arquivo será gerada. Digite uma senha forte e lembre-se dela, pois será necessária ao assinar novos certificados.
Também será necessário digitar um nome (Common Name) que será usado somente para exibição. Escolha um nome para representar sua CA; opções comuns incluem: nome do usuário, do host ou do servidor.
Execute o comando ./easyrsa build-ca:
# bash
# Acesse o diretório do EasyRSA cd /mnt/usb/easy-rsa/easyrsa3/ # Crie a CA ./easyrsa build-ca
Se tudo ocorrer corretamente, será possível visualizar alguns novos arquivos dentro da pasta pki/, entre eles o certificado ca.crt.
Gerando a chave TLS e os parâmetros Diffie-Hellman (DH)
Antes de prosseguir com a criação das chaves e certificados para o cliente e o servidor da VPN, ainda são necessários mais dois arquivos. A chave TLS impede que terceiros interfiram ou descubram que a VPN está em operação, enquanto os parâmetros Diffie-Hellman (DH) permitem que o OpenVPN crie um segredo compartilhado sem que a chave real seja transmitida.
$ bash
# Gera a chave TLS ./easyrsa gen-tls-crypt-key # Gera os parâmetros Diffie-Hellman (DH) ./easyrsa gen-dh
A chave TLS poderá ser encontrada em pki/private/easyrsa-tls.key e o arquivo contendo os parâmetro DH em pki/dh.pem.
Ambiente fictício
Para ilustrar os próximos exemplos, consideremos um cenário fictício em que funcionários de um escritório trabalham remotamente e precisam se conectar à rede da empresa para desempenhar suas funções.
Nesse contexto, o servidor OpenVPN será instalado no escritório, enquanto os clientes VPN serão configurados nos dispositivos dos funcionários em suas residências.
Gerando chave e certificado para o servidor
Neste passo, serão gerados uma chave privada e uma requisição para o servidor da VPN. A requisição, ao ser assinada pela CA, será convertida em um certificado. Será usado o parâmetro nopass para desabilitar o uso de senha na criptografia da chave.
O uso de uma senha exige que ela seja digitada sempre que o serviço de VPN for iniciado, o que pode não ser viável em servidores remotos ou que não possuam um teclado de fácil acesso. O comando segue o formato:
./easyrsa gen-req [ nome-do-servidor ] [ opções ]
Confirmar o nome do servidor quando solicitado durante o processo.
$ bash
./easyrsa gen-req escritorio nopass
A requisição foi gerada em pki/reqs/escritorio.req e a chave privada está em pki/private/escritorio.key.
Assine a requisição com o comando a seguir. Responda yes quando solicitado para confirmar os detalhes da requisição e insira a senha da CA para concluir a assinatura.
$ bash
./easyrsa sign-req server escritorio
O certificado ficará disponível em pki/issued/escritorio.crt.
Configurando o servidor
A partir deste momento, todos os comandos devem ser executados como root ou usando sudo. Copie os seguintes arquivos gerados pelo Easy-RSA para o diretório de configuração do OpenVPN:
# bash
cp /mnt/usb/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/certs/ cp /mnt/usb/easy-rsa/easyrsa3/pki/issued/escritorio.crt /etc/openvpn/certs/ cp /mnt/usb/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn/certs/ cp /mnt/usb/easy-rsa/easyrsa3/pki/private/escritorio.key /etc/openvpn/keys/ cp /mnt/usb/easy-rsa/easyrsa3/pki/private/easyrsa-tls.key /etc/openvpn/keys/
No Slackware, o diretório de configuração do OpenVPN contém um link para arquivos de exemplo. Faça uma cópia do arquivo server.conf para a pasta do OpenVPN e renomeie-o para escritorio.conf. Caso utilize outra distribuição e não encontre esse arquivo, será disponibilizada uma versão completa do arquivo de configuração.
# bash
cd /etc/openvpn/ cp sample-config-files/server.conf escritorio.conf
Crie o diretório ccd/ dentro da pasta do OpenVPN. Ele será usado para configurações específicas dos clientes:
# bash
mkdir /etc/openvpn/ccd
Abra o arquivo escritorio.conf com seu editor de texto favorito. A seguir, um exemplo comentado de um arquivo de configuração funcional para um servidor OpenVPN:
escritorio.conf
############################################# # Exemplo de configuração para um servidor # # OpenVPN com suporte a múltiplos clientes. # ############################################# local x.x.x.x # Endereço IP local no qual o OpenVPN deve escutar port 1194 # Porta TCP/UDP utilizada pelo OpenVPN proto udp # Protocolo de transporte (TCP ou UDP) dev tun # Tipo de túnel: roteado (tun) ou Ethernet (tap) ca /etc/openvpn/certs/ca.crt # Certificado da CA dh /etc/openvpn/certs/dh.pem # Parâmetros Diffie-Hellman (DH) cert /etc/openvpn/certs/escritorio.crt # Certificado do servidor key /etc/openvpn/keys/escritorio.key # Chave privada do servidor tls-auth /etc/openvpn/keys/easyrsa-tls.key 0 # Chave TLS (0 no servidor e 1 no cliente) ;crl-verify /etc/openvpn/crl.pem # Lista de Certificados Revogados topology subnet # Sub-rede /24 (255.255.255.0) server 10.8.0.0 255.255.255.0 # Define a rede VPN, servidor será 10.8.0.1 ifconfig-pool-persist ipp.txt # Mantém um registro dos IPs atribuídos aos clientes # Envia uma rota para os clientes, # permitindo acesso às redes internas push "route 192.168.10.0 255.255.255.0" # Define um diretório para configurações # específicas de cada cliente. Permite # atribuir IPs fixos e rotas. client-config-dir ccd # Remova o comentário para permitir que # os clientes se comuniquem entre si ;client-to-client # Envia um ping a cada 10 segundos e considera # o cliente offline após 120 segundos keepalive 10 120 cipher AES-256-GCM # Algoritmo de criptografia padrão data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC # Algoritmos suportados ;data-ciphers-fallback AES-256-CBC # Suporte para versões antigas # Desativa a compressão por motivos de segurança allow-compression no # Número máximo de clientes conectados simultaneamente max-clients 100 # Reduz privilégios após a inicialização user nobody group nobody # Melhora a estabilidade da conexão persist-key # Evita recarregar as chaves após uma reconexão persist-tun # Mantém a interface VPN ativa durante uma reconexão # Caminho para os arquivos de log status /var/log/openvpn-status.log log-append /var/log/openvpn.log verb 3 # Nível de detalhamento dos logs mute 20 # Silencia mensagens repetidas no log após 20 exibições # Notifica os clientes quando o servidor é # reiniciado para que ele possam se reconectar explicit-exit-notify 1
Dicas
Você pode habilitar o serviço apenas para IPv4 usando proto udp4 ou apenas para IPv6 com proto udp6. Se preferir TCP, utilize proto tcp4 ou proto tcp6.
É possível configurar múltiplos servidores OpenVPN simultaneamente. Para isso, basta gerar os certificados correspondentes e criar um arquivo de configuração separado para cada servidor dentro do diretório do OpenVPN. Por exemplo, você pode ter escritorio.conf, rh.conf, ti.conf etc. No Slackware, o script de inicialização do OpenVPN carregará automaticamente todos os arquivos de configuração que terminam em .conf dentro de /etc/openvpn.
A entrada ;crl-verify /etc/openvpn/crl.pem refere-se à lista de certificados revogados. Mais informações sobre esse recurso podem ser encontradas aqui.
Permissões dos arquivos e diretórios
Para aumentar a segurança, é necessário definir permissões adequadas para os arquivos e diretórios dentro de /etc/openvpn, garantindo que apenas os usuários autorizados tenham acesso.
# bash
# Define root como proprietário dos # arquivos e diretórios do OpenVPN chown -R root:root /etc/openvpn # Somente root pode ler e escrever # nos arquivos de configuração chmod 600 *.conf # Define root como proprietário e # atribui o grupo nobody a pasta # ccd/ e ao arquivo ipp.txt chown -R root:nobody ccd/ ipp.txt # Somente leitura para root nas # nas chaves e certificados chmod -R 400 keys/ certs/ # Acesso total para root, leitura # e execução para nobody em ccd/ chmod 750 ccd/ # Permite leitura e escrita para # root e nobody no arquivo ipp.txt chmod 660 ipp.txt
No Linux, as pastas precisam da permissão de execução (x) para serem acessadas, exceto para o usuário root. Por isso, os diretórios que armazenam chaves e certificados são configurados como somente leitura.
As chaves, os certificados e os arquivos de configuração principais (.conf) são lidos antes de os privilégios serem reduzidos para o usuário nobody. Portanto, esses arquivos devem pertencer ao usuário e grupo root. As chaves e certificados precisam apenas de permissão de leitura (400). Já os arquivos de configuração principais (.conf) precisam de permissão de leitura e escrita (600) para root.
O usuário nobody precisa de permissão de leitura e execução no diretório ccd/ para acessar os arquivos de configuração específicos dos clientes. Além disso, ele precisa de permissão de leitura e gravação no arquivo ipp.txt, que registra os endereços IP atribuídos.
Para verificar a estrutura de diretórios e as permissões aplicadas, utilize o comando:
# bash
tree -ugp ├── [drwxr-x--- root nobody ] ccd ├── [dr-------- root root ] certs │ ├── [-r-------- root root ] ca.crt │ ├── [-r-------- root root ] dh.pem │ └── [-r-------- root root ] escritorio.crt ├── [-rw------- root root ] escritorio.conf ├── [-rw-rw---- root nobody ] ipp.txt ├── [dr-------- root root ] keys │ ├── [-r-------- root root ] easyrsa-tls.key │ └── [-r-------- root root ] escritorio.key
Iniciando o servidor OpenVPN
Os comandos a seguir são específicos para o Slackware. Se estiver utilizando outra distribuição, consulte a documentação correspondente, pois o processo pode variar.
Antes de iniciar o serviço, conceda permissão de execução ao script de inicialização do OpenVPN:
# bash
chmod +x /etc/rc.d/rc.openvpn
Ao definir essa permissão, o script será executado automaticamente na inicialização do sistema.
Comandos para manipular o serviço:
# bash
# Inicia o serviço /etc/rc.d/rc.openvpn start # Interrompe o serviço /etc/rc.d/rc.openvpn stop # Reinicia o serviço /etc/rc.d/rc.openvpn restart
Consultando os logs
Verificar os logs é essencial para garantir que o OpenVPN esteja funcionando corretamente. Para facilitar a depuração, recomenda-se abrir múltiplos terminais e monitorar os logs enquanto inicia e interrompe o serviço.
Para acompanhar os registros em tempo real, utilize os seguintes comandos:
# bash
# Log do serviço tail -f /var/log/openvpn.log # Log das conexões tail -f /var/log/openvpn-status.log # Log do sistema tail -f /var/log/syslog
Os comandos acima exibem novas mensagens conforme são registradas, até que sejam interrompidos manualmente.
Depurando erros
Caso ocorra um problema na configuração, o OpenVPN geralmente indicará o erro nos logs. Por exemplo, se o diretório ccd/ não for criado ou se suas permissões não permitirem o acesso do usuário nobody, você poderá receber a seguinte mensagem:
Options error: --client-config-dir fails with 'ccd': No such file or directory (errno=2)
Verifique os logs para identificar e corrigir erros durante a inicialização do serviço. Se o OpenVPN for iniciado corretamente, o arquivo openvpn.log exibirá a seguinte mensagem: Initialization Sequence Completed.
Importante
Neste exemplo, o OpenVPN foi configurado para reduzir os privilégios após a inicialização, alternando para o usuário nobody. No entanto, ao encerrar o OpenVPN no Slackware, tanto no servidor quanto no cliente, ocorrem erros de permissão ao remover IPs e rotas. Essas falhas geram mensagens como as seguintes nos logs:
/var/log/openvpn.log
/usr/sbin/ip addr del dev tun0 10.8.0.1/24 RTNETLINK answers: Operation not permitted Linux ip addr del failed: external program exited with error status: 2
Para contornar esse problema, foram testadas diversas abordagens sem sucesso, como a execução de scripts externos por meio das opções down e down-pre junto à diretiva script-security, a configuração do sudo para permitir que o usuário nobody execute o comando ip e o uso do plugin openvpn-plugin-down-root.so.
A boa notícia é que, mesmo com as mensagens de erro, as ações necessárias são executadas corretamente: os IPs e rotas são removidos e a interface VPN é desativada conforme esperado. Durante os testes realizados para este material, não foram identificados problemas funcionais decorrentes desse erro, portanto, a opção adotada foi simplesmente ignorá-lo.
Caso deseje evitar essas mensagens, uma alternativa é executar o OpenVPN diretamente como root, sem reduzir os privilégios. No entanto, isso pode ter implicações de segurança.
Checando a VPN
Confirme se a interface da VPN foi criada:
# bash
ifconfig
tun0: flags=4305[UP,POINTOPOINT,RUNNING,NOARP,MULTICAST] mtu 1500
inet 10.8.0.1 netmask 255.255.255.0 destination 10.8.0.1
Se a interface estiver ativa, seu servidor está funcionando e pronto para receber conexões. Agora, vamos à configuração do cliente.
Gerando chave e certificado para o cliente
Neste passo, será gerada uma chave privada e uma requisição de certificado para o cliente da VPN. Execute os comandos a partir do diretório base do Easy-RSA. No exemplo, usamos /mnt/usb/easy-rsa/easyrsa3/. Quando solicitado, confirme o nome do cliente. Aqui, utilizaremos casa.
$ bash
./easyrsa gen-req casa nopass
Isso gerará a requisição em pki/reqs/casa.req e a chave privada em pki/private/casa.key.
Assine a requisição usando a chave privada da CA. Responda yes quando solicitado para confirmar os detalhes e insira a senha da CA ao ser solicitado:
$ bash
./easyrsa sign-req client casa
O certificado do cliente será gerado em pki/issued/casa.crt.
Configurando o cliente
Copie os arquivos gerados pelo Easy-RSA para o diretório de configuração do OpenVPN. Neste artigo, os arquivos estão armazenados em um pendrive. Se for transferi-los para um local remoto, utilize métodos seguros como SSH (scp, sftp) ou HTTPS:
# bash
cp /mnt/usb/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/certs/ cp /mnt/usb/easy-rsa/easyrsa3/pki/issued/casa.crt /etc/openvpn/certs/ cp /mnt/usb/easy-rsa/easyrsa3/pki/private/casa.key /etc/openvpn/keys/ cp /mnt/usb/easy-rsa/easyrsa3/pki/private/easyrsa-tls.key /etc/openvpn/keys/
Crie o arquivo de configuração casa.conf no diretório de configuração do OpenVPN. Você pode usar o arquivo de exemplo client.conf, disponível em sample-config-files, como base.
Abra o arquivo casa.conf com seu editor favorito.
# bash
vi /etc/openvpn/casa.conf
A seguir, um exemplo comentado de um arquivo de configuração funcional para um cliente OpenVPN:
casa.conf
################################################### # Exemplo de configuração para um cliente OpenVPN # ################################################### client # Configura como cliente dev tun # Utiliza um túnel roteado (tun) proto udp # TCP ou UDP? remote 10.0.0.68 1194 # IP e porta do servidor ca /etc/openvpn/certs/ca.crt # Certificado da CA cert /etc/openvpn/certs/casa.crt # Certificado do cliente key /etc/openvpn/keys/casa.key # Chave privada do cliente tls-auth /etc/openvpn/keys/easyrsa-tls.key 1 # Chave TLS (1 no cliente) # Se um nome de domínio for usado no parâmetro # "remote", essa opção faz com que o cliente # tente resolvê-lo indefinidamente resolv-retry infinite # Usa portas aleatórias na conexão com o servidor nobind # Reduz os privilégios após a inicialização user nobody group nobody # Melhora a estabilidade da conexão persist-key # Mantém as chaves carregadas após uma reconexão persist-tun # Mantém a interface de rede ativa durante uma reconexão # Exige que o certificado do servidor seja validado corretamente remote-cert-tls server # Define o algoritmo de criptografia para a comunicação cipher AES-256-GCM # Caminho para os arquivos de log status /var/log/openvpn-status.log log-append /var/log/openvpn.log verb 3 # Nível de detalhamento das mensagens do log mute 20 # Silencia mensagens repetidas no log após 20 ocorrências
Iniciando o cliente OpenVPN
Conceda permissão de execução ao script de inicialização do OpenVPN:
# bash
chmod +x /etc/rc.d/rc.openvpn
Com essa permissão, o script poderá ser executado manualmente e também será iniciado automaticamente junto com o sistema.
Comandos para manipular o serviço:
# bash
# Inicia o serviço /etc/rc.d/rc.openvpn start # Interrompe o serviço /etc/rc.d/rc.openvpn stop # Reinicia o serviço /etc/rc.d/rc.openvpn restart
Consultando os logs
Assim como no servidor, os logs são essenciais para diagnosticar problemas e verificar se o cliente OpenVPN está funcionando corretamente.
Utilize os seguintes comandos para monitorar os registros em tempo real:
# bash
# Log do serviço tail -f /var/log/openvpn.log # Log das conexões tail -f /var/log/openvpn-status.log # Log do sistema tail -f /var/log/syslog
Checando a VPN
Se a mensagem Initialization Sequence Completed for exibida no arquivo openvpn.log, isso indica que o cliente foi iniciado corretamente. Para confirmar que a VPN está funcionando como esperado, verifique se a interface da VPN foi criada e se as rotas configuradas com o comando push no servidor foram aplicadas corretamente:
# bash
# Verifica se a interface tun0 foi criada ifconfig tun0: flags=4305[UP,POINTOPOINT,RUNNING,NOARP,MULTICAST] mtu 1500 inet 10.8.0.2 netmask 255.255.255.0 destination 10.8.0.2 # Lista as rotas de rede configuradas route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 10.8.0.1 255.255.255.0 UG 0 0 0 tun0
Se tudo estiver correto, seu túnel VPN está ativo e pronto para uso.
Conclusão
Este texto oferece um guia detalhado para a configuração de um túnel OpenVPN no Linux, utilizando o Easy-RSA para a gestão de certificados e chaves. Ele abrange desde a instalação dos pacotes necessários até a criação e assinatura de certificados, configuração do servidor e cliente OpenVPN, ajustes de permissões de arquivos e diretórios, e verificação de logs para assegurar o funcionamento correto do serviço.
Para um entendimento mais aprofundado sobre o gerenciamento de certificados, incluindo aspectos conceituais, critérios de segurança e detalhes sobre o uso do Easy-RSA, recomendamos a leitura do artigo complementar:
Referências
Artigos antigos deste próprio site serviu como ponto de partida para a elaboração deste texto. Também foram usados os manuais (man page) disponíveis no Slackware Linux.
- https://openvpn.net/community-resources/how-to/
- https://easy-rsa.readthedocs.io/en/latest/
- https://telazul.drusian.com.br/pt/artigo/configuracao-do-openvpn-server-e-easy-rsa-3-no-slackware
- https://telazul.drusian.com.br/pt/artigo/configuracao-do-openvpn-cliente-e-easy-rsa-3-no-slackware