Criando a Autoridade Certificadora
O OpenVPN pode operar com 3 tipos de criptografia. Nenhuma criptografia (apenas o túnel), criptografia com chaves estáticas, e no modo TLS, em que as chaves são trocadas periodicamente. No nosso exemplo, usaremos o TLS.
Para o OpenVPN operar com o TLS, iremos criar uma Autoridade Certificadora (CA), e criar certificados de segurança assinados por essa CA. Isso é feito com o utilitário OpenSSL encontrado na maioria das distribuições Linux.
Primeiramente, precisamos configurar algumas opções do OpenSSL. Para isso, edite o arquivo de configuração do OpenSSL que normalmente está em /etc/ssl/openssl.cnf ou em /usr/share/ssl/openssl.cnf. Dentro desse arquivo você deve especificar algum lugar para armazenar seus certificados, por exemplo, /root/certificados, na opção dir.
[ CA_default ] dir = /root/certificados # Where everything is kept certs = $dir/certs # Where issued certs are kept crl_dir = $dir/crl # Where issued crl are kept database = $dir/index.txt # database index file. new_certs_dir = $dir/newcerts # default place for new certs certificate = $dir/my-ca.crt # The CA certificate serial = $dir/serial # The current serial number crl = $dir/crl.pem # The current CRL private_key = $dir/my-ca.key # The private key RANDFILE = $dir/private/.rand # private random number file
Você deve querer aumentar o tempo que o certificado será valido. Caso contrario, o sua VPN irá parar de funcionar exatamente um ano após o certificado ter sido criado. No nosso exemplo, vamos deixar em 3 anos.
default_days = 1095 # how long to certify for
Também é necessario que existam 2 arquivos dentro do diretório de certificados. O arquivos são index.txt e serial. O arquivo index.txt deve estar vazio, e arquivo serial, com um numero que possa ser incrementado. Como 01.
[root@toti root]# cd certificados/ [root@toti certificados]# touch index.txt [root@toti certificados]# echo 01 > serial
Caso você tenha alguma paranoia quanto a segurança, você pode aumentar o tamanho da chave criptografica, de 1024 bits para 2048 bits.
[ req ] default_bits = 2048
Com o OpenSSL configurado, e com o diretório criado, você já pode criar sua
CA, com o comando
openssl req -nodes -new -x509 -keyout my-ca.key -out my-ca.crt -days
1095
[root@toti certificados]# openssl req -nodes -new -x509 \ -keyout my-ca.key -out my-ca.crt -days 1095 Generating a 1024 bit RSA private key ...........................................++++++ ....++++++ writing new private key to 'my-ca.key' ----- 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. ----- Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:SANTA CATARINA Locality Name (eg, city) []:JOINVILLE Organization Name (eg, company) [Internet Widgits Pty Ltd]: ARP INFORMATICA Organizational Unit Name (eg, section) []:VPN Common Name (eg, YOUR name) []:ARP Email Address []:INFO@ALTORIOPRETO.COM.BR [root@toti certificados]#
Agora você já tem sua Autoridade Certificadora! Tome cuidado dela, a segurança da sua VPN está toda nesse diretório. Note também que esses passos não precisam necessariamente ser executados em um computador que fará parte da VPN.
Para o OpenVPN operar em modo TLS, também é necessario a geração dos parametros Diffie-Hellman, que é um protocolo para a troca de chaves criptograficas durante a execução do OpenVPN.
Para isso, você deve utilizar
o comando
openssl dhparam -out dh.pem 2048
Utilize 1024 se você
estiver utilizando chaves de 1024 bits.
[root@toti certificados]# openssl dhparam -out dh.pem 2048 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ......................................... +....................*.............++*++* [root@toti certificados]#
Parte 4: Configurando o OpenVPN -->