Configurando o OpenVPN para múltiplos clientes

Neste artigo explico como configurar o OpenVPN com múltiplos clientes. Cada um utilizando seu próprio certificado gerado através do OpenSSL.

[ Hits: 138.185 ]

Por: Ricardo Franzen em 07/08/2009 | Blog: http://rfranzen.com.br


Modelo do arquivo openssl.cnf



Vou assumir que você já possui o OpenSSL instalado.

Você pode alterar ou até mesmo usar o seu próprio openssl.cnf, estou fornecendo este pra deixar tudo bem completo. =)

Geralmente este arquivo encontra-se em /etc/ssl/openssl.cnf.

#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#

RANDFILE = /dev/arandom
[ca]
default_ca = CA_default
[CA_default]
dir = /etc/openvpn
certificate = $dir/xx.crt
private_key = $dir/xx.key
serial = $dir/serial
database = $dir/index.txt
new_certs_dir = $dir/
default_md = md5
policy = policy_match
default_days = 3500
[policy_match]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
#######################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
#countryName_default = AU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
#stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
#0.organizationName_default = Internet Widgits Pty Ltd
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = CryptSoft Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (eg, fully qualified host name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ x509v3_extensions ]
nsCaRevocationUrl = http://www.cryptsoft.com/ca-crl.pem
nsComment = "This is a comment"
# under ASN.1, the 0 bit would be encoded as 80
nsCertType = 0x40
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
#nsCertSequence
#nsCertExt
#nsDataType

Página anterior     Próxima página

Páginas do artigo
   1. Introdução, download e instalação do OpenVPN
   2. Modelo do arquivo openssl.cnf
   3. Gerando os certificados
Outros artigos deste autor

Monitorando seu servidor Jabber

Leitura recomendada

Instalação do Gentoo em HD Externo para dual boot com Windows

Configuração da placa wireless LinkSys WUSB54G com drivers de Linux

Montando o cache de DNS

Fedora Core 1 :: Firewall e update

Instalando Slackware "na marra"

  
Comentários
[1] Comentário enviado por edusite em 17/08/2009 - 20:34h

de 0 a 10 dou 5 , amigo faltou algumas coisas para explicar, pra quem é novo em vpn vai precisar juntar seu
artigo com um mais completo ,ex: o que é ca pmg.crt em que momento isso foi gerado?,
vc esta carregando servidor.conf dentro do cliente?
para que serve a criaçao do diretorio ccd
route 10.0.1.0 255.255.255.0
server 10.0.1.0 255.255.255.0

clinte windows?

[2] Comentário enviado por rfranzen em 18/08/2009 - 09:15h

Bom dia edusite. Tenho que concordar e discordar de você.
Realmente, as informações sobre o diretório ccd, que é onde devemos colocar as configurações de ip e rota do cliente caso queiramos atribuir endereços fixos a eles. ex:
ifconfig-push <ip cliente> <mascara> <gateway da vpn/ip do servidor>

O artigo explica perfeitamente como gerar os certificados e onde cada arquivo de configuração é utilizado e o SO em que tudo foi feito, basta ler o artigo.

Abraços.

[3] Comentário enviado por tiagoferla em 01/10/2009 - 17:00h

era examente oq eu precisava!!
os certificado SSL!!
mas amigo, segui todos os seus passos corretamente, mas na hora da criação do segundo certificado para o cliente!!
ele deu um erro!!! copiei o seu arquivo /etc/ssl/openssl.cnf com vc citou no tutorial! e mesmo assim continua dando o mesmo erro!!
se puder me ajudar!! empaquei nessa parte e não consigo sair! ;/

abraços.

[4] Comentário enviado por fernandoborges em 02/10/2009 - 19:42h

É... Beeeem resumido seu artigo. Pra levantar uma VPN robusta, com os recursos necessários pra interligar efetivamente gateways remotos, é preciso bem mais. Mas esse seria o primeiro passo. Como o amigo edusite comentou, é necessário ler artigos mais aprofundados pra completar o seu. Mas... Parabéns mesmo assim!
Em breve estarei colocando meu primeiro artigo aqui no VOL sobre esse tema.
Abraço.

[5] Comentário enviado por rfranzen em 05/10/2009 - 11:56h

Bom dia fernandoborges obrigado pelo comentário.

Não entendi o que você quer dizer com "VPN robusta". A partir do momento que a VPN funciona e seus hosts conseguem se comunicar pela mesma, os detalhes de robustez e segurança são feitos através de firewall e rotas mais detalhadas (o que não está no escopo do artigo).

Também é importante lembrar que este artigo foi escrito em 6 de Outubro de 2006 (link original: www.rfranzen.com.br/2006/10/06/configurando-o-openvpn-para-multiplos-clientes/). Muita coisa mudou em 3 anos de projeto OpenVPN. Inclusive a quantidade de material sobre o assunto, que hoje é incrivelmente superior à existente em 2006.

Podemos dizer até que hoje, é relativamente simples configurar uma VPN simples sem nenhum esforço, apenas um pouco de conhecimento técnico.

Ficaremos no aguardo do seu artigo...
Abraços.

[6] Comentário enviado por removido em 19/10/2009 - 16:03h

Legal Seu Artigo Amigo.
Continue Assim.

[7] Comentário enviado por btavares em 05/11/2009 - 15:38h

Como faço no caso de vpn host-to-server? Ou seja quero que meus vendedores se conectem na nossa rede através de um notebook
e um minimodem 3G, através do VPN GUI, no ipcop eu faço isso com 1 min, mas nunca consegui fazer em um servidor modo texto puro
tenho alguns servidores Debian e Ubuntu Server em clientes, mas nos clientes que precisam de VPN dessa maneira que falei,
uso o IPCOP, foi a solução de VPN mais prã tica que achei.

NO mais, tá excelente seu artigo, parabéns, e fica a sugestão de fazer um artigo que use o VPN GUI instalado em um WinXP "discando"
para o servidor VPN e entrando na rede.

Grande Abraço.

[8] Comentário enviado por nariz em 25/11/2009 - 10:11h

em um ambiente onde o meu cliente é um gateway com uma rede interna atras dele....
ServidorPrincipalVPN-------->ClienteVPN---------->RedeInternaClienteVPN
Como ficaria por exemplo uma rota para que o ServidorPrincipal consiga pingar uma maquina que está na RedeInternaClienteVPN ???
Usando chaves estáticas e com várias interfaces de tunelamento no servidor eu coloco as rotas apontando para interface TUN referente ao cliente e funciona legal.
Usando certificado ainda nao consegui fazer essa comunição...

[9] Comentário enviado por rfranzen em 25/11/2009 - 11:03h

Bom dia nariz,

Você precisa criar nele uma rota para a rede interna do cliente, utilizando como gateway o IP que o cliente vpn possui dentro da rede da vpn...

Não sei se fui claro... :-S

[10] Comentário enviado por cabriocario em 11/12/2009 - 11:01h

Aos participantes: Instalei no meu gateway (debian lenny) o openvpn -apt-get openvpn, coloquei os certifcados que me sao fornecidos dentro de /etc/openvpn, mas nao consigo fazer funcionar. Startei o openvpn tudo ok.
ANalisei o log do openvpn: WARNING: file 'etc/openvpn/arquivo.key' is group or others acessible logo abaixo: canot open file key.
file 'arquivo.key' NO SUCH file is directory.
Me certifiquei do endereco correto no .conf e se o arquivo.key estava no local indicado.
Se alguém tiver uma sguestao. Favor postar.

[11] Comentário enviado por rfranzen em 11/12/2009 - 12:05h

Olá Flavio,
Pelo erro que você está reportando, é só corrigir as permissões do seu certificado... O OpenVPN não está conseguindo ler o arquivo.

[12] Comentário enviado por leo_conectiva009 em 04/04/2010 - 23:38h

Parabéns bela iniciativa e oa vontade....

mas:

Download do OpenVPN: - (FIZ O DOWNLOAD NORMAMENTE)

# wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

Descompactar o conteúdo do arquivo:

# tar -zxvf openvpn-2.0.9.tar.gz - (OK TAMBÉM)

Isto é só para a organização:

# mv openvpn-2.0.9/ /usr/src/ (OK)

Compilar e pronto:

# cd /usr/src/openvpn-2.0.9 - (OK)
# ./configure --prefix=/usr/local/openvpn -(OK)
# make && make install -(NÃO CONSEGUI) "ERRO - make: *** No targets specified and no makefile found. Stop."

Ou ainda mais simples que tudo isso (acima)...

# apt-get install openvpn - tudo OK...

Usuários iniciantes que nem eu, recomendo o nosso amigo APT-GET :p

[13] Comentário enviado por rfranzen em 05/04/2010 - 00:11h

Olá leo_conectiva009, obrigado por comentar...

Realmente, usar o apt-get, geralmente é uma ótima opção, não só para usuários iniciantes, mas também para avançados. Tudo vai depender da aplicação =)

[14] Comentário enviado por removido em 15/07/2010 - 18:31h

Bom artigo cara.
Simples e direto.

Abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts