Skip to content

Certificado e Chaves do Servidor

Marcos Ramos edited this page Nov 24, 2015 · 1 revision

Para encriptar o tráfego de rede o OpenVPN utiliza certificados digitais.

Criar e Configurar uma Autoridade Certificadora

O servidor OpenVPN suporta autenticação bidirecional, o que implica que não só cliente se autentica com o servidor como o servidor se autentica com o cliente. Aqui configuraremos uma Autoridade Certificadora (CA) para gerar o certificado e a chave para o servidor. Será utilizado o EasyRSA.

O primeiro passo é copiar os scripts do EasyRSA:

cp -r /usr/share/easy-rsa/ /etc/openvpn

Vamos criar um diretório para armazenar as chaves:

mkdir -p /etc/openvpn/easy-rsa/keys

O EasyRSA possui um arquivo de variáveis que pode ser editado para criar certificados para pessoas, negócios ou qualquer entidade escolhida. Esta informação é copiada para os certificados e para as chaves e ajudam a identificá-los mais tarde.

vim /etc/openvpn/easy-rsa/vars

Os valores abaixo devem ser ser editados de acordo co sua preferência:

export KEY_COUNTRY="BR"
export KEY_PROVINCE="DF"
export KEY_CITY="Brasília"
export KEY_ORG="PencilLabs"
export KEY_EMAIL="admin@pencillabs.com"
export KEY_OU="Devops"
export KEY_NAME="server"

Agora geramos os parâmetros Diffie-Hellman:

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

Agora entrams na pasta onde estão os scripts EasyRSA:

cd /etc/openvpn/easy-rsa

Inicializamos então o PKI (Public Key Infrastructure):

. ./vars

Uma mensagem de aviso será exibida, mas como ainda não há chaves, não há com o que se preocupar:

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Limpamos o diretório de trabalho para apagar chaves antigas e ter espaço para criar novas:

./clean-all

Finalmente criamos a autoridade certificadora invocando o script abaixo. Serão feitas várias perguntas para confirmar os valores que foram definidos anteriormente no arquivo de variáveis:

./build-ca

Para cada passo pressione ENTER.

Gerar o Certificado e a Chave para o Servidor

Ainda no diretório /etc/openvpn/easy-rsa executamos o comando para gerar a chave do servidor, onde server é o mesmo valor da variável KEY_NAME definida no arquivo de variáveis.

./build-key-server server

Confirme as perguntas. Quando as seguintes questões aparecerem:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Deixe as duas em branco pressionando ENTER. Responda y para as próximas duas perguntas:

Sign the certificate? [y/n]
1 out of 1 certificate requests certified, commit? [y/n]

Por fim, a seguinte mensagem deve ser exibida:

Write out database with 1 new entries
Data Base Updated

Mover os certificados e chaves

O OpenVPN espera que a CA do servidor, certificado e chave estejam em /etc/openvpn. Portanto é necessário copiar esses arquivos:

cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

O servidor está pronto para utilizar:

service openvpn start

ou systemctl start openvpn