Jak na OpenVPN nejen na Windows (konfigurace, certifikáty atd.)

Preparatory Steps

  1. Navigate to the C:\Program Files\OpenVPN\easy-rsa folder in the command prompt:
    1. Press Windows Key + R
    2. Type „cmd.exe“ and press Enter.
      cmd.exe
      
    3. Navigate to the correct folder:
      cd "C:\Program Files\OpenVPN\easy-rsa"
      
  1. Initialize the OpenVPN configuration:
    init-config
    
    • NOTE: Only run init-config once, during installation.
  1. Open the vars.bat file in a text editor:
    notepad vars.bat
    
  1. Edit the following lines in vars.bat, replacing „US“, „CA,“ etc. with your company’s information:
    set KEY_COUNTRY=CZ
    set KEY_PROVINCE=Czech
    set KEY_CITY=MojeMesto
    set KEY_ORG=Organizace
    set KEY_EMAIL=mail@host.domain pokud se vyplni vsechny certifikaty budou obsahovat tento email
    
  1. Save the file and exit notepad.
  1. Run the following commands:
    vars
    
    clean-all
    

Building Certificates and Keys

  1. The certificate authority (CA) certificate and key:
    build-ca
    
    • When prompted, enter your country, etc. These will have default values, which appear in brackets. For your „Common Name,“ a good choice is to pick a name to identify your company’s Certificate Authority. For example, „OpenVPN-CA“:
      Country Name (2 letter code) [US]:
      State or Province Name (full name) [CA]:
      Locality Name (eg, city) [SanFrancisco]:
      Organization Name (eg, company) [OpenVPN]:
      Organizational Unit Name (eg, section) []:
      Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
      Email Address [mail@host.domain]:
      
  1. The server certificate and key:
    build-key-server server
    
    • When prompted, enter the „Common Name“ as „server“
    • When prompted to sign the certificate, enter „y“
    • When prompted to commit, enter „y“
  1. Client certificates and keys:
  1. For each client, choose a name to identify that computer, such as „mike-laptop“ in this example.
    build-key mike-laptop
    
    • When prompted, enter the „Common Name“ as the name you have chosen (e.g. „mike-laptop“)
  2. Repeat this step for each client computer that will connect to the VPN.
  1. Generate Diffie Hellman parameters (This is necessary to set up the encryption)
    build-dh
    

Chybu při vytvoření certifikátu

failed to update database
TXT_DB error number 2

opravíme tím, že pro každý certifikát musí být unikátní commonName. Pokud se název bude opakovat vznikne certifikát s nulovou velikostí a zobrazí se tato chyba.

Pro linux platí obdobný sled příkazů

# source ./vars   // zavede promenne ze souboru do prostredi
# ./clean-all     // SMAZE ./keys adresar a znovu ho vytvori, takze pokud uz mate CA 
                  // vytvorenou, jednejte opatrne
# ./build-ca      // vytvori lokalni CA a provede upravy openssl.cnf, ktery je siren s easy-rsa, 
                  // takze neupravi ten co mate v systemu, vase CA (pokud s ni budete 
                  // pracovat pres skripty easy-rsa) bude pouzivat openssl.cnf v 
                  // adresari s easyrsa.
# ./build-dh      // vygeneruje diffie-hellman klic do ./keys/
# ./build-key-server server // vytvori v ./openssl.cnf sekci server a certifikat pro 
                            //server v ./keys/. Pote nabidne jeho podepsani.
# ./build-key klient // vytvori klic a certifikat klienta do adresare ./keys/

Odvolání, zrušení uživatelského certifikátu easy-rsa

. ./vars
./revoke-full client2

Přidání routy přes cmd
route add 192.168.2.0 mask 255.255.255.0 10.1.0.1
za předpokladu že máš ip klienta 10.1.0.6 a ip serveru 10.1.0.1

Nastavení na straně serveru /etc/openvpn/vpn_server.conf

# server
mode server

# tls jako server
tls-server

# port, 1194 = default
port 1194

# protokol, tcp/udp
proto tcp-server

# nastavi zarizeni
dev tap0

server 192.168.253.0 255.255.255.0

#routa do vnitrni site s rozsirenym rozsahem 192.168.0.1-192.168.1.254
push "route 192.168.0.0 255.255.254.0"

client-to-client
#route 192.168.1.0 255.255.255.0
#push "route 192.168.1.0 255.255.255.0"
#push "route 10.0.1.0 255.255.255.0 192.168.1.1"

# soucasne prihlaseni vice klientu
duplicate-cn

# certifikat certifikacni autority
ca /etc/openvpn/ca.crt

# certifikat serveru
cert /etc/openvpn/server.crt

# klic serveru
key /etc/openvpn/server.key

# parametry pro Diffie-Hellman protokol
dh /etc/openvpn/dh2048.pem

# logy serveru
log-append /var/log/openvpn.log

# status serveru
status /var/run/vpn.status 10

# uzivatel pod kterym bezi server
user nobody

# skupina pod kterou bezi server
group nogroup

# udrzuje spojeni nazivu, 10 (ping) a 120 (ping-restart)
keepalive 10 120

# komprese prenasenych dat
comp-lzo

# ukecanost serveru
verb 3

## Use cipher
cipher BF-CBC

#cipher none
auth SHA1

Nastavení na straně uživatele firma.ovpn

# server ke kteremu se pripojujeme
remote <ip adresa nebo hostname xxx.xxx.xxx.xxx>

# tls jako klient
tls-client

# port, 1194 = default
port 1194

# protokol, tcp/udp
proto tcp-client

# nastaveni zarizeni
dev tap

# povoluje stazeni konfigurace ze severu
pull

# certifikat certifikacni autority
ca firma/ca.crt

# umisteni certifikatu klienta
cert firma/uzivatel.crt

# umisteni certifikatu klienta
key firma/uzivatel.key

# uzivatel pod kterym bezi klient
user nobody

# skupina pod kterou bezi klient
group nogroup

# opakovani radku v logu
mute 10

# logy klienta
#log-append /var/log/openvpn.log

# status klienta
#status /var/run/vpn.status 10

# komprese prenasenych dat
comp-lzo

# ukecanost klienta
verb 3

#Pokud jste generovali označené certifikáty, klientský konfig musí obsahovat tento řádek:
#ns-cert-type server

#push "route-gateway <IP-adresa xxx.xxx.xxx.xxx>"

## Use cipher
#cipher aes256

#cipher none
#auth SHA1

Kontrola certifikátu:

openssl verify -CAfile ca.crt -purpose sslclient client.crt

Odkazy:

http://community.openvpn.net/openvpn/wiki/Easy_Windows_Guide
http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-openvpn-server-pokracovani
http://lukin.savvy.cz/linux/120-openvpn-2-instalace-a-vytvoreni-certifikatu-klient-server
https://blog.remibergsma.com/2013/02/27/improving-openvpn-security-by-revoking-unneeded-certificates/