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]:
- 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/