Temat: [Miniporadnik] Konfiguracja OpenVPN - OpenWRT 25.12 + Klient PC
Cześć na bazie poradnika Cezarego dokonałem konfiguracji serwera OpenVPN oraz klienta OpenVPN GUI na Win11 + wygenerowałem odpowiednie klucze kryptograficzne.
Poradnik Cezarego jest na stronie:
https://eko.one.pl/?p=openwrt-openvpntun
Do poradnika do części gdzie jest opisana konfiguracja serwera VPN dodałem jeszcze poniższe opcje:
uci set openvpn.home.tls_auth='/etc/openvpn/ta.key 0'
uci set openvpn.home.data_ciphers='AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305'
uci set openvpn.home.tls_version_min='1.2'
uci set openvpn.home.keepalive='10 120'
uci set openvpn.home.user='nobody'Powyższe wg. mnie daje lepsze bezpieczeństwo połączonych klientów i nie pozwala na łączenie z TLS starszą niż 1.2
W moim przypadku wolałem wygenerować plik PEM oraz pozostałe klucze i certyfikaty za pomocą zainstalowanego kiedyś OpenSSL w wersji 3.6.1. Oczywiście można to zrobić również przy pomocy EasyRSA lub wg. sposobu Cezarego z poradnika. Wybór należy do Was.
Przy konfiguracji plików kryptograficznych dla serwera VPN użyłem komputera PC na którym wygenerowałem plik PEM oraz niezbędne certyfikaty i klucze, następnie skopiowałem całość do odpowiedniego folderu na routerze, gdzie był już skonfigurowany serwer VPN.
1. Jak wygenerować plik PEM (czyli zestaw parametrów kryptograficznych Diffie-Hellmana), klucze i certyfikaty:
Na PC użyłem Openssl w wersji 3.6.1 (jest już wersja nowsza 4.0.0)
mkdir C:\openvpn-pki
cd C:\openvpn-pkia) Generowani pliku PEM
openssl dhparam -out dh2048.pem 2048b) Opcja: przygotuj plik o nazwie openssl.cnf i wklej do niego poniższy kod
(Krok opcjonalny, ale zalecany aby wygenerowane klucze i certyfikaty miały X.509. Daje większe bezpieczeństwo przed atakami typu "Man in the middle". W przypadku dodatkowej konfiguracji warto do pliku *.ovpn dodać na końcu linijkę "remote-cert-tls server". Klient będzie wtedy weryfikować czy łączy się z prawdziwym serwerem czy fakeowym. W takim przypadku w logu klienta VPN nie będzie widoczne już ostrzeżenie o tym, że nie została włączona opcja sprawdzania certyfikatu serwera).
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no
[req_distinguished_name]
CN = OpenVPN-CA
[v3_ca]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
[server]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
[client]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature
extendedKeyUsage = clientAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuerc) Klucz i certyfikat CA:
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=OpenVPN-CA"d) Klucz i certyfikat serwera VPN (albo klienta - patrz instrukcja pkt 4)
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/CN=OpenVPN-Server"
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crti na koniec klucz TLS-auth i do tego potrzebny jest zainstalowany OpenVPN GUI
e) Klucz TLS
openvpn --genkey secret ta.keygdyby nie działała ww. komenda spróbuj tak
& "C:\Program Files\OpenVPN\bin\openvpn.exe" --genkey secret ta.key2. Kopiowanie kluczy na router do folderu /etc/openvpn/ gdzie jest już zainstalowany serwer OpenVPN
scp ca.crt server.crt server.key ta.key root@192.168.0.1:/etc/openvpn/3. Kopiowanie zawartości pliku *.pem, *.crt i *.key
W moim przypadku skopiowałem sobie zawartość plików do pliku konfiguracyjnego openVPN (*.ovpn) i przekopiowałem gotowy plik konfiguracyjny do urządzenia, które będzie klientem VPN (w moim przypadku komputer PC). W Windows 11 plik *.ovpn trzeba przenieść do "\Users\Administrator\OpenVPN\config\".
4. Generowanie kluczy dla klientów VPN
W przypadku chęci konfiguracji na innych urządzeniach, które będą klientami trzeba wygenerować dedykowane klucze zgodnie z instrukcją z litery d). W miejsce "server" albo "OpenVPN-Server" podstaw dowolną nazwę np. iPhone czy Kazik.
Pozdrawiam ![]()