O procedimento abaixo aplica-se em servidores OpenVPN "modernos", executados sobre a distribuição Rocky Linux. Para obter um procedimento apropriado para distribuições mais antigas contacte a 3GNTW.
Os certificados OpenVPN devem ser emitidos, assinados e instalados no servidor que executa o servidor OpenVPN, (ou no 1º nodo de um "cluster", quando em regime de alta disponibilidade).
A gestão do servidor OpenVPN e dos certificados é realizada dentro da pasta "/etc/openvpn/":
Na pasta "/etc/openvpn/easy-rsa/" encontram-se as ferramentas para emissão e assinatura dos certificados, quer para os utilizadores, quer para o próprio servidor;
Na pasta "/etc/openvpn/server/rsa-keys/" residem os certificados do servidor, assim como os certificados gerados para os clientes.
Certifique-se que tem acesso à referida máquina através da consola, ou através de um cliente SSH.
Altere a sua pasta de trabalho para "/etc/openvpn/easy-rsa/" com o seguinte comando:
cd /etc/openvpn/easy-rsa/
De seguida execute um dos comandos abaixo.
Se deseja gerar um pedido de certificado OpenVPN para utilização por parte de um utilizador normal, deve protegê-lo através de uma palavra-chave, (de forma a não ser possível o acesso à sua organização, mesmo que o certificado OpenVPN fique na posse de entidades não autorizadas). Execute o comando "./easyrsa gen-req endereço@domínio.tld", em que endereço@domínio.tld é o nome a atribuir ao certificado, sem espaços. Normalmente usa-se o endereço de correio do utilizador para quem o certificado se destina. Um exemplo:
[root@servidor easy-rsa]# ./easyrsa gen-req utilizador@dominio.tld
Using Easy-RSA 'vars' configuration:
* /etc/openvpn/easy-rsa/vars
IMPORTANT:
The preferred location for 'vars' is within the PKI folder.
To silence this message move your 'vars' file to your PKI
or declare your 'vars' file with option: --vars=<FILE>
Using SSL:
* openssl OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [utilizador@dominio.tld]:
Notice
------
Private-Key and Public-Certificate-Request files created.
Your files are:
* req: /etc/openvpn/easy-rsa/pki/reqs/utilizador@dominio.tld.req
* key: /etc/openvpn/easy-rsa/pki/private/utilizador@dominio.tld.key
[root@servidor easy-rsa]#
Se deseja gerar um pedido de certificado OpenVPN para utilização por parte de um dispositivo que estabelece a ligação VPN automaticamente, sem intervenção humana, nesse caso a sua utilização não deve exigir a introdução de uma palavra-chave. Execute o comando "./easyrsa gen-req dispositivo nopass", em que dispositivo deve ser um nome descritivo para o dispositivo onde o certificado OpenVPN será instalado, mas sem espaços. Um exemplo:
[root@servidor easy-rsa]# ./easyrsa gen-req testes2 nopass
Using Easy-RSA 'vars' configuration:
* /etc/openvpn/easy-rsa/vars
IMPORTANT:
The preferred location for 'vars' is within the PKI folder.
To silence this message move your 'vars' file to your PKI
or declare your 'vars' file with option: --vars=<FILE>
Using SSL:
* openssl OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [testes2]:
Notice
------
Private-Key and Public-Certificate-Request files created.
Your files are:
* req: /etc/openvpn/easy-rsa/pki/reqs/testes2.req
* key: /etc/openvpn/easy-rsa/pki/private/testes2.key
[root@servidor easy-rsa]#
Será questionado sobre vários parâmetros do certificado. Geralmente são feitas sugestões, dentro de parênteses rectos.
Quando o valor sugerido está correcto, basta teclar "Enter" para o aceitar e passar à questão seguinte. Os principais campos a ter em conta são a palavra-chave do certificado, (que pode ser alterada mais tarde, através do cliente OpenVPN), e o "Common Name", que deverá aparecer preenchido com o mesmo endereço de correio ou nome do dispositivo que indicou no passo anterior.
Os pedidos de certificados são arquivados na pasta "/etc/openvpn/easy-rsa/pki/reqs/", e as respectivas chaves privadas são arquivadas em "/etc/openvpn/easy-rsa/pki/private/".
De seguida é necessário "assinar" o pedido de certificado OpenVPN, operação efectuada com o comando "./easyrsa sign-req client endereço@domínio.tld", ou "./easyrsa sign-req client dispositivo", como se demonstra:
[root@servidor easy-rsa]# ./easyrsa sign-req client utilizador@dominio.tld
Using Easy-RSA 'vars' configuration:
* /etc/openvpn/easy-rsa/vars
IMPORTANT:
The preferred location for 'vars' is within the PKI folder.
To silence this message move your 'vars' file to your PKI
or declare your 'vars' file with option: --vars=<FILE>
Using SSL:
* openssl OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
You are about to sign the following certificate:
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a client certificate
for '825' days:
subject=
commonName = utilizador@dominio.tld
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/openssl-easyrsa.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'utilizador@dominio.tld'
Certificate is to be certified until Jun 9 18:14:08 2026 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Notice
------
Certificate created at:
* /etc/openvpn/easy-rsa/pki/issued/utilizador@dominio.tld.crt
[root@servidor easy-rsa]#
O certificado foi gerado e arquivado na pasta "/etc/openvpn/easy-rsa/pki/issued/".
Para que o servidor OpenVPN o reconheça, e aceite, deve ser colocado na pasta "/etc/openvpn/server/rsa-keys/", juntamente com a respectiva chave privada, da seguinte forma:
Deve criar um pacote ZIP com tudo o que o cliente OpenVPN necessita para ser correctamente configurado: o certificado do utilizador ou dispositivo, a respectiva chave privada, o certificado da CA - Certificate Authority que assinou o certificado, um ficheiro de configuração para o cliente OpenVPN, e material criptográfico para a criação de ligações seguras. Pode fazê-lo com o comando ""
Em ambientes de alta disponibilidade, deve sincronizar a base de dados de certificados e chaves privadas para o 2º nodo do "cluster", com o comando "/root/tools/cluster-sync/openvpn.sh".
Deverá agora utilizar um programa para transferência de ficheiros, usando os protocolos SSH ou SFTP, como por exemplo o WinSCP, para transferir o pacote ZIP criado no ponto anterior, e transferi-lo para o utilizador ou dispositivo que irá executar o cliente OpenVPN.
Veja nos artigos relacionados, abaixo, como instalar e configurar um cliente OpenVPN.