Preparatory Steps
- Navigate to the C:\Program Files\OpenVPN\easy-rsa folder in the command prompt:
- Press Windows Key + R
- Type „cmd.exe“ and press Enter.
cmd.exe
- Navigate to the correct folder:
cd "C:\Program Files\OpenVPN\easy-rsa"
- Initialize the OpenVPN configuration:
init-config
- NOTE: Only run init-config once, during installation.
- Open the vars.bat file in a text editor:
notepad vars.bat
- 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
- Save the file and exit notepad.
- Run the following commands:
vars
clean-all
Building Certificates and Keys
- 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]:
- 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“:
- 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“
- Client certificates and keys:
- 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“)
- Repeat this step for each client computer that will connect to the VPN.
- 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/