OpenVPN + Bridge
Configuração do OpenVPN em modo bridge e autenticação por par de chaves, onde será criada uma C.A. no próprio servidor e os clientes que se autenticarem neste ganharão um ip na interface tap válido na rede interna, com seu gateway e DNS caso possua.
Parte 2: Preparação do ambiente e criação do certificado
Agora criaremos os diretórios necessários para as configurações que criamos, digite no terminal:
# mkdir -p /etc/ssl/ca
# mkdir /etc/ssl/ca/certs
# mkdir /etc/ssl/ca/newcerts
# mkdir /etc/ssl/ca/crl
# mkdir /etc/ssl/ca/private
# touch /etc/ssl/ca/index.txt
# echo 01 > /etc/ssl/ca/serial
# chmod -R 700 /etc/ssl/ca
Criaremos agora o certificado/chave da C.A., digite no terminal:
# cd /etc/ssl/ca
# openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 3650
Algumas informações de localidade e nome da empresa serão perguntadas, como já configuramos no arquivo openssl.cnf algumas respostas default, nas seguintes perguntas basta você teclar ENTER:
Country Name (2 letter code) (BR):
State or Province Name (full name) [SC]:
Locality Name (eg, city) [Florianopolis]:
Organization Name (eg, company) [nome da sua empresa]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) []: - aqui coloque o nome do seu servidor.
Email Address []: - e aqui coloque o email do responsável pelo servidor, no caso o seu email.
Pronto, o certificado e chave da C.A. foram criados, agora vamos movê-los para os diretórios configurados.
Mova a chave do certificado para dentro do subdiretório private em /etc/ssl/ca:
# mv ca.key ./private
Agora criaremos o algoritmo usado para a troca de chaves criptográficas durante a execução do OpenVPN. Utilize no comando a criptografia que consta no arquivo openssl.cnf, no nosso caso 1024bits.
No terminal digite:
# openssl dhparam -out dh1024.pem 1024
E então criaremos o certificado de revogação, crl.pem. No terminal digite:
# openssl ca -gencrl -out crl.pem -config /usr/share/ssl/openssl.cnf
E finalmente vamos gerar o certificado do servidor, no terminal digite:
# openssl req -nodes -new -keyout server.key -out server.csr
Mais uma vez algumas informações deverão ser preenchidas, siga os mesmos passos da geração da C.A.:
Country Name (2 letter code) (BR):
State or Province Name (full name) [SC]:
Locality Name (eg, city) [Florianopolis]:
Organization Name (eg, company) [nome da sua empresa]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) []: - O mesmo informado no certificado da C.A.
Email Address []: - O mesmo informado no certificado da C.A.
A challenge password []: - A única diferença entre o certificado da C.A. e do servidor é aqui, informe uma senha.
Agora vamos assinar a chave do servidor com o certificado da C.A., no terminal digite:
# openssl ca -out server.crt -in server.csr
E responda "y" para todas as perguntas.
# mkdir -p /etc/ssl/ca
# mkdir /etc/ssl/ca/certs
# mkdir /etc/ssl/ca/newcerts
# mkdir /etc/ssl/ca/crl
# mkdir /etc/ssl/ca/private
# touch /etc/ssl/ca/index.txt
# echo 01 > /etc/ssl/ca/serial
# chmod -R 700 /etc/ssl/ca
Criaremos agora o certificado/chave da C.A., digite no terminal:
# cd /etc/ssl/ca
# openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 3650
Algumas informações de localidade e nome da empresa serão perguntadas, como já configuramos no arquivo openssl.cnf algumas respostas default, nas seguintes perguntas basta você teclar ENTER:
Country Name (2 letter code) (BR):
State or Province Name (full name) [SC]:
Locality Name (eg, city) [Florianopolis]:
Organization Name (eg, company) [nome da sua empresa]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) []: - aqui coloque o nome do seu servidor.
Email Address []: - e aqui coloque o email do responsável pelo servidor, no caso o seu email.
Pronto, o certificado e chave da C.A. foram criados, agora vamos movê-los para os diretórios configurados.
Mova a chave do certificado para dentro do subdiretório private em /etc/ssl/ca:
# mv ca.key ./private
Agora criaremos o algoritmo usado para a troca de chaves criptográficas durante a execução do OpenVPN. Utilize no comando a criptografia que consta no arquivo openssl.cnf, no nosso caso 1024bits.
No terminal digite:
# openssl dhparam -out dh1024.pem 1024
E então criaremos o certificado de revogação, crl.pem. No terminal digite:
# openssl ca -gencrl -out crl.pem -config /usr/share/ssl/openssl.cnf
E finalmente vamos gerar o certificado do servidor, no terminal digite:
# openssl req -nodes -new -keyout server.key -out server.csr
Mais uma vez algumas informações deverão ser preenchidas, siga os mesmos passos da geração da C.A.:
Country Name (2 letter code) (BR):
State or Province Name (full name) [SC]:
Locality Name (eg, city) [Florianopolis]:
Organization Name (eg, company) [nome da sua empresa]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) []: - O mesmo informado no certificado da C.A.
Email Address []: - O mesmo informado no certificado da C.A.
A challenge password []: - A única diferença entre o certificado da C.A. e do servidor é aqui, informe uma senha.
Agora vamos assinar a chave do servidor com o certificado da C.A., no terminal digite:
# openssl ca -out server.crt -in server.csr
E responda "y" para todas as perguntas.
Vou testar logo que possa.
Parabéns!