Debian Etch e OpenVPN

Questa guida si basa su quella creata da Luca Sartoni reperibile al link http://www.lucasartoni.com/2007/04/02/openvpn-x509-windows-xp-vs-linux/

La guida differisce per:

  1. una configurazione diversa delle cartelle e del file server.conf
  2. correzione di 2 piccoli errori nella creazione dei certificati (server ed utente)
  3. la non necessità di fornire il file cacert.pem al client

Preparazione del server

installazione di openvpn mediante apt

  • apt-get install openvpn
  • mkdir -p /etc/openvpn/vpn1/certs
  • apt-get install openvpn
  • mkdir -p /etc/openvpn/vpn1/certs

creazione dei certificati mediante OpenSSL

Creazione della CA

  • /usr/lib/ssl/misc/CA.sh -newca (assegnamo le caratteristiche della ca)

abbiamo la dir demoCA che contiene la nostra Certification Authority

  • /usr/lib/ssl/misc/CA.sh -newreq (richiediamo il primo certificato)
  • /usr/lib/ssl/misc/CA.sh -sign (e lo firmiamo)

a questo punto abbiamo due file:

  • newreq.pem che contiene la richiesta di certificato e la chiave privata criptata associata a tale certificato.
  • newcert.pem che il certificato x509 firmato dalla CA

decrittiamo la chiave privata

  • openssl rsa -in newkey.pem -out vpnserver.key

e rinominiamo il file di cerficato per chiarezza

  • mv newcert.pem vpnserver.pem

adesso abbiamo

  • vpnserver.pem che contiene il certificato x509 del vpnserver
  • vpnserver.key che contiene la chiave privata IN CHIARO del vpnserver

spostiamo i certificati nella nuova cartella

  • mv vpnserver.pem /etc/openvpn/vpn1/certs
  • mv vpnserver.key /etc/openvpn/vpn1/certs
  • chmod 400 /etc/openvpn/vpn1/certs/vpnserver.key (MOLTO IMPORTANTE)

e ci mettiamo anche il certificato della CA

  • cp demoCA/cacert.pem /etc/openvpn/vpn1/certs

creiamo il file di definizione Diffie-Hellman direttamente al suo posto

  • openssl dhparam -out /etc/openvpn/vpn1/certs/dh1024.pem 1024

se possediamo un file di revoche lo copiamo nella dir dei certificati

  • cp crl.pem /etc/openvpn/vpn1/certs

a questo punto non ci resta che creare il file di configurazione per il server

  • vi /etc/openvpn/server.conf
#OpenVPN Server conf
port 5002
proto udp
dev tun
tun-mtu 1400

tls-server
ca /etc/openvpn/vpn1/certs/cacert.pem
cert /etc/openvpn/vpn1/certs/vpnserver.pem
key /etc/openvpn/vpn1/certs/vpnserver.key
dh /etc/openvpn/vpn1/certs/dh1024.pem
#crl-verify /etc/openvpn/vpn1/certs/crl.pem

server 192.168.100.0 255.255.255.0

push "route 192.168.0.0 255.255.255.0"
client-to-client

keepalive 10 60
status-version 1
cipher BF-CBC
max-clients 100

persist-key
persist-tun
# logfile
status /etc/openvpn/vpn1/openvpn-status.log 30
# livello di verbosity del log
verb 3
#### end local.con vpnserver ######

con questa configurazione si avrà:

LAN: 192.168.0.0/24
tun (rete vpn): 192.168.100.0/24

usando la funzione push ogni volta che un utente si connette alla vpn viene aggiunto automaticamente un instradamento alla rete LAN

realizziamo un certificato utente

  • /usr/lib/ssl/misc/CA.sh -newreq
  • /usr/lib/ssl/misc/CA.sh -sign
  • openssl pkcs12 -in newcert.pem -inkey newkey.pem -certfile demoCA/cacert.pem -export -out primoclient.p12

ci vengono chieste 2 password: la prima serve a decrittare la chiave privata (la password che abbiamo impostato15 secondi fa) la seconda risulta essere MOLTO importante in quanto serve a crittare nuovamente la private key a a creare il pacchetto PKCS12. Questo formato e’ lo standard di distribuzione dei certificati+chiavi+certificatoCA. Al client dovremo consegnare il file p12 e la password di utilizzo.

consegnamo il file p12 al client.

creaiamo sul client un file di configurazione con i seguenti dati:

#OpenVPN Client conf

client
dev tun
proto udp

remote <ip_pubblico_remoto>
port 5002
nobind

persist-key
persist-tun

pkcs12 primoclient.p12
cipher BF-CBC
verb 3

Links utili:

This entry was posted in Linux & co and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *