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:
- una configurazione diversa delle cartelle e del file server.conf
- correzione di 2 piccoli errori nella creazione dei certificati (server ed utente)
- 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: