Portál AbcLinuxu, 30. dubna 2025 12:39
Konfigurace OpenVPN jako klient/server s certifikátem chráněným heslem.
Nejprve nainstalujeme potřebné balíčky.
apt-get install openvpn liblzo1 liblzo2-2
Certifikáty:
Zkopírujeme si skripty pro tvorbu certifikátů.
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
Nastavíme přístupová práva pouze pro roota.
chmod 0700 /etc/openvpn/easy-rsa
Nastavíme si proměnné pro vytváření certifikátů.
vim /etc/openvpn/easy-rsa/vars export KEY_SIZE=2048 export KEY_COUNTRY=CZ export KEY_PROVINCE="Czech Republic" export KEY_CITY="City" export KEY_ORG="OpenVPN-company" export KEY_EMAIL="vpn@domain.com"
Aktivace proměnných.
cd /etc/openvpn/easy-rsa . ./vars
Vymazání všech klíčů z adresáře ./keys.
./clean-all
Vytvoření certifikační autority.
./build-ca
Country Name (2 letter code) [CZ]: State or Province Name (full name) [Czech Republic]: Locality Name (eg, city) [City]: Organization Name (eg, company) [OpenVPN-company]: Organizational Unit Name (eg, section) []:company Team Common Name (eg, your name or your server's hostname) []:domain.com Email Address [vpn@domain.com]:
Vytvoření certifikátu a privátního klíče pro server.
./build-key-server server
Country Name (2 letter code) [CZ]: State or Province Name (full name) [Czech Republic]: Locality Name (eg, city) [City]: Organization Name (eg, company) [OpenVPN-company]: Organizational Unit Name (eg, section) []:company Team Common Name (eg, your name or your server's hostname) []:domain.com Email Address [vpn@domain.com]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Vytvoření klientského certifikátu chráněného heslem. Soubory client1.crt, client1.csr, client1.key, ca.crt z adresáře ./keys nakopírujeme bezpečnou formou do /etc/openvpn na klienta.
./build-key-pass client1 ./build-key-pass client2 ...
Enter PEM pass phrase: password Verifying - Enter PEM pass phrase: again password Country Name (2 letter code) [CZ]: State or Province Name (full name) [Czech Republic]: Locality Name (eg, city) [City]: Organization Name (eg, company) [OpenVPN-company]: Organizational Unit Name (eg, section) []:company Team Common Name (eg, your name or your server's hostname) []:domain.com Email Address [vpn@domain.com]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Vytvoření Diffie Hellman parametrů.
./build-dh
Kopírování z ./keys do /etc/openvpn a nastavení přístupových práv pouze na roota. (na straně serveru)
cp /etc/openvpn/easy-rsa/keys/{ca.crt,server.crt,server.key,dh2048.pem} /etc/openvpn chmod 600 /etc/openvpn/{ca.crt,server.crt,server.key,dh2048.pem} /etc/openvpn
Konfigurace pro server:
vim /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 # adresa serveru ifconfig 10.0.1.100 255.255.255.0 # rozsah adres pro klienty ifconfig-pool 10.0.1.1 10.0.1.20 255.255.255.0 # 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
Konfigurace pro klienta:
vim /etc/openvpn/vpn_client.conf
# server ke kteremu se pripojujeme remote domain.com # 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 ca.crt # certifikat klienta cert client1.crt # certifikat klienta key client1.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
Testování:
Spustíme daemony OpenVPN na serveru a na klientovi.
/etc/init.d/openvpn start
Takto by měl vypadat start na straně serveru.
Starting virtual private network daemon: vpn_server(OK).
Na straně klienta po zadání správného hesla.
Starting virtual private network daemon: vpn_clientEnter Private Key Password: (OK).
Test spojení
ping 192.168.100.1
Tiskni
Sdílej:
/var/log/openvpn.log
na klientu se obevovala dve varovani
WARNING: you are using user/group/chroot without persist-key/persist-tun -- this may cause restarts to fail WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.Podle navodu zde a zde, je resenim pridat do
/etc/openvpn/vpn_client.conf
na klientu tyto tri radky
persist-key persist-tun ns-cert-type server
Koukam na to, ze v konfiguraci serveru se odkazuje parametrem dh na nejaky soubor *.pem. K cemu to tam je? Nemusi byt byt totez i v konfiguraci klienta?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.