OpenVPN konfiguráció az Easy-RSA-val#
✓ |
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
Megjegyzés
Ez az útmutató folyamatban lévő munka, és megfelelően frissül. Kérjük, vegye figyelembe ezt az állapotot.
Ez az útmutató azt mutatja be, hogyan kell konfigurálni az OpenVPN-ügyfeleket, hogy bejelentkezzenek egy Nitrokey Pro 2 vagy egy Nitrokey Storage 2 használatával. A szoftveres kulcskezeléshez az Easy-RSA segédprogramot fogjuk használni, amely az OpenVPN mellett fejlődött.
To sign the certificates, we will use a Nitrokey HSM 2 set up as Certificate Authority, however this guide does not cover the set up of the CA itself (it is clear and well documented here).
Az Easy-RSA-t fogjuk használni, mivel úgy tűnik, hogy némi rugalmasságot biztosít, és lehetővé teszi a kulcsok külső PKI-ken keresztül történő kezelését. Ezt fogjuk használni a szerveren az aláírási kérés kibocsátásához, és ugyanezt a folyamatot megismételjük az ügyfélnél. A tanúsítvány aláírási kérelmeket a Nitorkey HSM-en lévő hitelesítésszolgáltató írja alá, majd újra továbbítja a szerverre és az ügyfélre.
Előfeltételek#
A következő dokumentációban 3 különböző gépre lesz szükségünk a következők szerint:
OpenVPN szerver (v. 2.5) Debian 10-en (EC2 virtuális gép - AWS)
OpenVPN kliens (v. 2.4.9) Fedora 30-on (helyi gép)
A tanúsítványkiadó hatóság elérhető lesz egy önálló Fedora 30-as gépről (helyi gép).
Az eszközökkel való interakcióhoz szükségünk lesz az OpenSC 0.20 telepítve a kliens és a CA gépre (a helyi gépekre). A beállításhoz követheti a `ezen a linken (*Unix) <https://github.com/OpenSC/OpenSC/wiki/Compiling-and-Installing-on-Unix-flavors><https://github.com/OpenSC/OpenSC/wiki/Compiling-and-Installing-on-Unix-flavors>`__ található utasításokat.
A függőségek letöltéséhez Fedora gépeken ezt az utasítást használhatjuk:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
Debian Linuxhoz újabb OpenSC csomagok állnak rendelkezésre itt.
A fizikai kulcsok kezeléséhez a következő Nitrokeys-t fogjuk használni:
Hitelesítési kulcs a Nitrokey Pro 2 (pdf)
A Nitrokey HSM 2 (pdf) tanúsítványkiadó (CA) használata
Emlékeztetőül, a Nitrokey HSM 2 tanúsítványszolgáltató létrehozásához kövesse a ` dokumentációban <certificate-authority.html#sign-a-server-certificate>`_ található utasításokat.
Alternatívaként beállíthatja saját hitelesítésszolgáltatóját egy egy külön gépen, vagy használhatja az OpenVPN bemutatót, amely szintén az Easy-RSA-ra támaszkodik. Az utolsó 2 lehetőség a kulcskezeléshez szoftveres megoldásokra támaszkodik.
Kiszolgálói oldal#
1. Telepítse az OpenVPN-t#
Először is engedélyeznünk kell az IP-továbbítást a
/etc/sysctl.conf
fájl szerkesztésével.$ editor /etc/sysctl.confVegye ki a megjegyzést, vagy ennek megfelelően szerkessze a következő sort
net.ipv4.ip_forward=1Zárja be a mentés után, és adja meg ezt a parancsot
$ sysctl -pMiután az IP-továbbítás megtörtént, le kell töltenünk az OpenvPN legújabb kiadását a Debian 10-es szerverünkre, az ezen utasítások szerint:
Váltson root jogosultságot, és töltse le a csomagot aláíró GPG kulcsot.
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -Adja hozzá a megfelelő OpenVPN csomagok URL címét a
sources.list
fájlhoz.# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exitLetöltöttük az OpenVPN 2.5-öt, mivel a „jelszó kérés” legalább OpenVPN verzió 2.4.8 verziót igényel a bejelentkezéshez.
Ezután letölthetjük az OpenVPN-t
$ sudo apt install openvpnHa ellenőrizni szeretné a verziót, akkor a
--version
meghívásával és a következő kiírásával lehetséges:$ sudo openvpn --version OpenVPN 2.5_beta3 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep 1 2020 library versions: OpenSSL 1.1.1d 10 Sep 2019, LZO 2.10 Originally developed by James Yonan Copyright (C) 2002-2018 OpenVPN Inc <sales@openvpn.net> Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no \ enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_iproute2=yes \ enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_maintainer_mode=no enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no \ enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no \ enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no \ enable_systemd=yes enable_werror=no enable_win32_dll=yes enable_x509_alt_username=yes with_aix_soname=aix with_crypto_library=openssl with_gnu_ld=yes \ with_mem_check=no with_sysroot=no
2. Telepítse az Easy-RSA-t#
A PKI létrehozásához letölthetjük az Easy-RSA legújabb verzióját a szerver és az ügyfélgépekre. A legfrissebb kiadás beszerzéséhez lépjünk a hivatalos EasyRSA GitHub projekt Releases oldalára, másoljuk ki a
.tgz
végződésű fájl letöltési linkjét, majd illesszük be a következő parancsba:
A legújabb kiadás letöltése
$ cd ~ $ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgzCsomagolja ki a tarballt
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. PKI létrehozása az OpenVPN-kiszolgálóhoz#
Mielőtt létrehozhatná az OpenVPN-kiszolgáló privát kulcsát és tanúsítványát, létre kell hoznia egy helyi nyilvános kulcsinfrastruktúra könyvtárat az OpenVPN-kiszolgálón. Ezt a könyvtárat fogja használni a kiszolgáló és az ügyfelek tanúsítványkérelmeinek kezelésére, ahelyett, hogy közvetlenül a hitelesítésszolgáltatói kiszolgálón tenné meg azokat.
Az OpenVPN-kiszolgálón lévő PKI könyvtár létrehozásához fel kell töltenie egy
vars
nevű fájlt néhány alapértelmezett értékkel.
Hozzon létre egy
vars
fájlt.$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor varsMiután megnyitottuk a fájlt, illesszük be a következő két sort
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"Ez az egyetlen két sor, amire szükséged van ebben a
vars
fájlban az OpenVPN-kiszolgálón, mivel nem fogod használni a Tanúsítványkezelőként. Biztosítani fogják, hogy a privát kulcsok és a tanúsítványkérelmek úgy legyenek beállítva, hogy az Elliptikus görbe kriptográfiát (ECC) használják a kulcsok és a biztonságos aláírások létrehozásához az ügyfelek és az OpenVPN-kiszolgáló számára.Ami a kriptográfiai algoritmusok kiválasztását illeti, én a ezen útmutatóban található modellt követem, és ezeket a saját igényeidnek megfelelően testre szabhatod.
A PKI inicializálása
Miután feltöltötte a
vars
fájlt, folytathatja a PKI könyvtár létrehozását. Ehhez futtassa az easyrsa szkriptet az init-pki opcióval:$ ./easyrsa init-pkiMiután inicializálta a PKI-t az OpenVPN-kiszolgálón, készen áll a következő lépésre, amely az OpenVPN-kiszolgáló tanúsítványkérelmének és privát kulcsának létrehozása.
4. Hozzon létre server.req
és server.key
.#
Most, hogy az OpenVPN-kiszolgálója rendelkezik az összes előfeltétel telepítésével, a következő lépés egy kulcspár létrehozása, amely egy (titokban tartandó) privát kulcsból és egy tanúsítvány aláírási kérelemből (
.csr
) áll az OpenVPN-kiszolgálón.Általánosságban elmondható, hogy azokon a rendszereken, ahol kulcsot és kérést generálunk, ezeket a fájlokat a
nopass
argumentummal titkosítatlanul hagyjuk, mivel a szervereknek általában jelszó bevitele nélkül kell elindulniuk. Ez egy nem titkosított kulcsot generál, ezért figyeljünk oda gondosan a hozzáférési és fájlengedélyekre.Javaslat
Konfigurációs megjegyzések az OpenVPN-től:
- The server, and each client, must have their own cert and key
file. The server and all clients will use the same CA file.
A szervertanúsítványnak a következőkkel kell rendelkeznie:
keyUsage: digitalSignature, keyEncipherment<x>
extendedKeyUsage: serverAuth
Létrehozza az aláírási kérelmet a kiszolgáló számára
Navigáljon a
~/easyrsa
könyvtárba az OpenVPN-kiszolgálón nem root felhasználóként, és adja meg a következő parancsokat:$ cd easyrsa/ $ ./easyrsa gen-req server nopassEz létrehoz egy privát kulcsot a kiszolgálóhoz és egy
server.req
nevű tanúsítványkérő fájlt.Ha már rendelkezik az aláírt tanúsítvánnyal, akkor továbbítja azt vissza az OpenVPN-kiszolgálóra.
Másolja a kulcsot az OpenVPN-kiszolgáló könyvtárába
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/A fenti lépések elvégzése után sikeresen létrehozott egy privát kulcsot az OpenVPN-kiszolgálójához. Az OpenVPN-kiszolgálóhoz tanúsítványaláírási kérelmet is generált.
Javaslat
Fájlkiterjesztések a tanúsítvány aláírási kérelmekhez
A hitelesítésszolgáltató és a HSM oktatóprogram által elfogadott fájlkiterjesztés
.csr
fájl létrehozását jelzi, az Easy-RSA azonban.req
kiterjesztésű tanúsítvány aláírási kérelmeket hoz létre.Mindkét kiterjesztést felváltva fogjuk használni, miközben gondoskodunk arról, hogy a megfelelő fájlokat továbbítsuk a Tanúsítványkezelőhöz, és létrehozzuk a végső tanúsítványt
.crt
kiterjesztéssel.Az útmutató következő részében egy
.req
fájlt fogunk aláírni a HSM 2 eszközön telepített hitelesítésszolgáltatóval. Erre a célra egy dedikált gépet fogok használni a kérések aláírására.
5. Aláírás és visszakeresés server.crt
#
A következő utasítások a
server.req
(vagyserver.csr
) fájlnak a CA rendszerbe történő átvitelét igénylik.Maga az átvitel nem érzékeny a biztonságra, bár bölcs dolog ellenőrizni, hogy a fogadott fájl megegyezik-e a feladó másolatával, ha a szállítás nem megbízható.
Ahhoz, hogy végigmenjünk ezeken a lépéseken, nagymértékben támaszkodni fogok a ezen utasításokra, hogy aláírjuk a tanúsítvány aláírási kérelmeket, miután az Easy-RSA-val generáltuk őket.
Írja alá a
server.req
fájltA HSM elérésére szolgáló helyi gépen az Opensc 0.20 által biztosított eszközökkel aláírjuk a
.req
fájlt, és visszaküldjük az OpenVPN szervernek. Feltételezzük, hogy a kiszolgáló gépről a CA gépére továbbítottuk a fájlt.Először is kezdjük a HSM Nitrokey csatlakoztatásával, és adjuk meg ezt az utasítást a rendelkezésre álló kulcsok felsorolásához.
Az elérhető eszközök listájának lekérdezése
$ p11tool --list-all(Kötelező lépés) Ha ez az első alkalom, hogy tanúsítványt ír alá a hitelesítésszolgáltatóval, érdemes lekérni a hitelesítésszolgáltató privát kulcsának URI-jét a HSM-ből, és beilleszteni a konfigurációs fájlba.
Megjegyzés
A kulcs URI-jának ebben a formátumban kell lennie:
pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0104068;token=SmartCard-HSM%20%28UserPIN%29%00%00%00%00%00%00%00%00%00;id=%E0%16%1C%C8%B6%F5%D6%6A%C6%83%5E%CD%EC%B6%23%FC%05%06%A6%75;object=root;type=private
openvpn/
könyvtár létrehozása acertificate-authority/
alatt.$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/Írja alá a
server.req<x>
$ openssl ca -config sign_server_csrs.ini -engine pkcs11 -keyform engine -days 375 -notext -md sha512 -create_serial -in server.req -out /home/user/pki/issued/server.crtA
server.crt
fájl letöltése a kiszolgáló gépre.
Az aláírt tanúsítványok átvitele a kiszolgálóra
A hitelesítésszolgáltató gépéről másolja a
server.crt
éschain.crt
fájlokat az OpenVPN-kiszolgálóra. Ebben a példában ascp
parancsot fogjuk használni a következők szerint:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmpHelyezze el a tanúsítványokat a kiszolgáló könyvtárában
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/serverFigyelem
CA tanúsítvány és
chain.crt<x>
A fenti esetben a hitelesítésszolgáltató visszaküldi az aláírt sever tanúsítványt, és tartalmazza a
CA.crt
hitelesítésszolgáltatói tanúsítványt, amely achain.crt
fájl. Ez történhet nem biztonságos csatornán keresztül is, bár az ügyfélnek ajánlott megerősíteni, hogy a kapottchain.crt
érvényes-e, ha a szállítás nem megbízható.Lehetőség van a
chain.crt
fájl átnevezéséreCA.crt
fájlra a célgépen, azonban achain.crt
-t fogjuk használni a következő utasításokban.
6. Az OpenVPN-kiszolgáló konfigurálása#
A TLS-t használó kapcsolat több tanúsítványt és kulcsot igényel a hitelesítéshez. Most, hogy ezeket kiállítottuk és aláírtuk, elhelyezhetjük őket a megfelelő könyvtárakban. A gyökérkönyvtárban elhelyezendő tanúsítványok és kulcsok bontása a következő:
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)Az OpenVPN-kiszolgálón most létrehozhatja a
server.conf
konfigurációs fájlt a kedvenc szövegszerkesztőjével. A fájlt az Ön igényei szerint konfigurálhatja, mi pedig gondoskodunk arról, hogy a szervertanúsítvány és a kulcs részeket az Ön által az aláírt fájloknak választott neveknek megfelelően változtassuk meg:# OpenVPN Server Certificate - CA, server key and certificate ca chain.crt cert server.crt key server.keyItt van a konfigurációs fájl, amelyet az utasítások teszteléséhez használhatunk:
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC user nobody group nogroup persist-key persist-tun status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 tls-version-min 1.2 # Lower boundary for TLS version tls-version-max 1.2 # Higher boundary for TLS versionHa tesztelni szeretnénk, hogy a konfiguráció megfelelően működik-e, használhatjuk ezt a parancsot:
$ sudo openvpn --server --config server.conf
7. Indítsa el az OpenVPN szolgáltatást a kiszolgálón#
Engedélyezze az OpenVPN szolgáltatást a systemctl-hez való hozzáadásával, és indítsa el a következő parancsokkal:
$ sudo systemctl -f enable openvpn@server $ sudo systemctl start openvpn@serverAz OpenVPN-szolgáltatás aktiválásának kétszeres ellenőrzéséhez használja ezt a parancsot:
$ sudo systemctl status openvpn@serverAz OpenVPN-nek ezen a ponton már futnia kell.
Ügyféloldali konfiguráció#
1. Telepítse az OpenVPN-t és az Easy-RSA-t#
Telepítse a szoftvert
Közvetlenül
dnf install
segítségével telepíthetjük az OpenVPN 2.4.9 és az Easy-RSA 3.0.7 verziókat.$ sudo dnf install openvpn easy-rsaEzután létrehozunk egy nem-root könyvtárat az Easy RSA számára
Easy-RSA
néven.$ mkdir ~/easyrsaÉs kapcsolja össze az Easy RSA csomaggal, amit most telepítettünk.
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. PKI létrehozása az OpenVPN-ügyfél számára#
Ugyanúgy, ahogyan létrehoztunk egy PKI-t az OpenVPN-kiszolgálón, létrehozunk egy PKI-t az Easy-RSA használatával az ügyféloldalon.
3. Hozzon létre egy client.req
és client.key
.#
Ugyanúgy, ahogyan a kulcspárt kiállítottuk a sever-en, generálunk egy kulcspárt az ügyfél számára, amely a
client.req
fájlból és aclient.key
fájlból áll. Ez utóbbit az ügyfélgépen titokban kell tartani.
4. Írja alá a client.req
és adja ki a client.crt
fájlt.#
A
client.req
fájlnak a CA gépre történő átviteléhez ugyanazt a módszert fogjuk használni, mint aserver.req
fájl esetében.Az átvitelt követően a hitelesítésszolgáltató gépén aláírjuk a tanúsítvány aláírási kérelem fájlt ezzel a paranccsal
$ openssl ca -config sign_server_csrs.ini -engine pkcs11 -keyform engine -days 375 -notext -md sha512 -create_serial -in client.req -out /home/user/pki/issued/client.crt
5. Importálja client.crt
a Nitrokey-t a CA-gépről.#
A
client.crt
fájl létrehozása után csatlakoztassuk a Nitrokey Pro 2 eszközt a CA géphez, és importáljuk a.crt
fájlt a Pro 2 eszközre ezzel a paranccsal:$ pkcs15-init --store-certificate client.crt --id 3Ezzel a paranccsal ellenőrizheti, hogy a kulcs valóban a Nitrokey-n van-e tárolva:
$ pkcs15-tool -cVagy alternatívaként
$ pkcs11-tool --list-objectsTovábbi parancsokat a OpenSC wiki oldalon találsz.
6. Szerezze be a chain.crt
fájlt a hitelesítésszolgáltató gépéről.#
Míg a
client.crt
stored on the nitrokey Pro 2 device, we must retrieve thechain.crt
fájlt az ügyfélgépen tartjuk, és a megfelelő könyvtárban tároljuk. Használhatjuk ascp
, mint az útmutató szerver fejezetében ismertetett módszerben.
7. Az ügyfél konfigurálása a Nitrokeyvel való interakcióhoz#
Most az ügyfélgépen csatlakoztassuk a Nitrokey Pro-t, és használjuk a VPN-kapcsolat létrehozásához a kiszolgálóval. Általánosságban elmondható, hogy a TLS-t használó kapcsolat több tanúsítványt és kulcsot igényel a hitelesítéshez:
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyEhhez az útmutatóhoz a következő
client.conf<x>
fájlt használhatjuk, és ennek megfelelően hozzáadhatjuk a szükséges opciókat:client dev tun proto udp remote <server> 1194 resolv-retry infinite nobind user nobody group nobody persist-key persist-tun ca ca.crt remote-cert-tls server cipher AES-256-CBC verb 3 redirect-gateway def1 tls-version-min 1.2 # Lower boundary for TLS version tls-version-max 1.2 # Higher boundary for TLS version
A helyes tárgy meghatározása
Minden PKCS#11 szolgáltató több eszközt is támogathat. Az elérhető objektumok listájának megtekintéséhez a következő parancsot használhatja:
$ openvpn --show-pkcs11-ids /usr/lib64/pkcs11/opensc-pkcs11.so The following objects are available for use. Each object shown below may be used as parameter to --pkcs11-id option please remember to use single quote mark. Certificate DN: CN=client Serial: E53DA75C5B8F1518F520BCEF0128C09F Serialized id: pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03Minden tanúsítvány/magánkulcs pár egyedi
Serialized id
karakterlánccal rendelkezik. A konfigurációs fájlban meg kell adni a kért tanúsítvány szerializált id karakterláncát. Ezt apkcs11-id
opció szimpla idézőjelek használatával tehetjük meg.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'A kinyert szerializált azonosító hozzáadása a konfigurációs fájlhoz
A kedvenc szövegszerkesztőjével nyissa meg a server.conf fájlt, és illessze be a következő sorokat, miközben ügyeljen arra, hogy a saját
Serialized id
sorait is beillessze:pkcs11-providers /usr/lib64/pkcs11/opensc-pkcs11.so pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'Az OpenVPN Hitelesítéshez kapcsolódó további `beállításokhoz hitelesítéshez hozzáadhat néhány sort a kulcskezelés kezeléséhez, bár ez opcionális.
Megjegyzés
Kattintson a kód megtekintéséhez
# nitrokey config pkcs11-providers /usr/lib64/pkcs11/opensc-pkcs11.so pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03' # pkcs11-pin-cache 300 # daemon # auth-retry nointeract # management-hold # management-signal # management 127.0.0.1 8888 # management-query-passwords pkcs11-cert-private 1 # Prompt for PINVálasztható lépés
Ha a konfigurációt a Nitrokey-n lévő tokennel és anélkül is tesztelni kell, akkor a
client.conf
sorokat adhat hozzá ugyanahhoz a ``-hoz, és az igényeinek megfelelően kommentálhatja/nem kommentálhatja a megfelelő sorokat:Megjegyzés
Kattintson a kód megtekintéséhez
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1Az OpenVPN kliens konfigurálása
A végleges konfigurációs fájl
client.conf
így nézzen ki:client dev tun proto udp remote <server> 1194 resolv-retry infinite nobind user nobody group nobody persist-key persist-tun ca ca.crt remote-cert-tls server cipher AES-256-CBC verb 3 redirect-gateway def1 tls-version-min 1.2 # Lower boundary for TLS version tls-version-max 1.2 # Higher boundary for TLS version # nitrokey login pkcs11-providers /usr/lib64/pkcs11/opensc-pkcs11.so pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03' # pkcs11-pin-cache 300 # daemon # auth-retry nointeract # management-hold # management-signal # management 127.0.0.1 8888 # management-query-passwords pkcs11-cert-private 1 # Prompt for PIN # OR # non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1Configure OpenVPN (Windows only)
A kézfogás létrehozásához konfigurálnia kell az OpenVPN-ben található OpenSSL-t.
Hozzuk létre a
ssl
könyvtárat aC:\Program Files\OpenVPN
könyvtárban és hozzuk létre aopenssl.cnf
fájlt a következő tartalommal :openssl_conf = default_conf
[ default_conf ] ssl_conf = ssl_sect
[ ssl_sect ] system_default = ssl_default_sect
[ ssl_default_sect ] SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512:RSA+SHA384:ECDSA+SHA384:RSA+SHA256:ECDSA+SHA256 MaxProtocol = TLSv1.2 MinProtocol = TLSv1.2
Ezzel a módosítással nem lesz hiba, ahogyan azt a itt, itt és itt jelentette.
Ismert problémák
Van néhány ismert probléma az OpenVPN bejelentkezéssel kapcsolatban az OpenSC-vel. Kérjük, tekintse meg ezeket a problémákat itt.
8. Indítsa el az OpenVPN klienst#
Indítsa el az OpenVPN szolgáltatást az ügyfeleken
Engedélyezze az OpenVPN szolgáltatást, és indítsa el a következő parancsokkal:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.serviceAz OpenVPN szolgáltatás aktiválásának ellenőrzéséhez használja ezt a parancsot:
$ sudo systemctl status openvpn-server@server.serviceAdja meg a felhasználói PIN-kódot
Az OpenVPN kliens futtatásakor a Nitrokey PIN-kódját kell megadni:
$ sudo openvpn --client --config client.conf Fri Sep 11 17:42:01 2020 OpenVPN 2.4.9 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Apr 24 2020 Fri Sep 11 17:42:01 2020 library versions: OpenSSL 1.1.1g FIPS 21 Apr 2020, LZO 2.08 Fri Sep 11 17:42:01 2020 PKCS#11: Adding PKCS#11 provider '/usr/lib64/pkcs11/opensc-pkcs11.so' Enter User PIN (OpenPGP card) token Password: ******Figyelem
Unfortunately OpenVPN doesn’t seem to be able to establish a handshake on some operating systems and stops at an error as reported here, here and here
This is what the error output looks like: $ sudo openvpn --client --config client.conf Fri Sep 11 17:42:01 2020 OpenVPN 2.4.9 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Apr 24 2020 Fri Sep 11 17:42:01 2020 library versions: OpenSSL 1.1.1g FIPS 21 Apr 2020, LZO 2.08 Fri Sep 11 17:42:01 2020 PKCS#11: Adding PKCS#11 provider '/usr/lib64/pkcs11/opensc-pkcs11.so' Enter User PIN (OpenPGP card) token Password: ******`` Fri Sep 11 17:42:12 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]18.157.180.240:1194`` Fri Sep 11 17:42:12 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]`` Fri Sep 11 17:42:12 2020 UDP link local: (not bound) Fri Sep 11 17:42:12 2020 UDP link remote: [AF_INET]18.157.180.240:1194 Fri Sep 11 17:42:12 2020 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay Fri Sep 11 17:42:12 2020 TLS: Initial packet from [AF_INET]18.157.180.240:1194, sid=d79690cf 9e38ce89 Fri Sep 11 17:42:12 2020 VERIFY OK: depth=1, CN=server_CA Fri Sep 11 17:42:12 2020 VERIFY KU OK Fri Sep 11 17:42:12 2020 Validating certificate extended key usage Fri Sep 11 17:42:12 2020 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication Fri Sep 11 17:42:12 2020 VERIFY EKU OK Fri Sep 11 17:42:12 2020 VERIFY OK: depth=0, CN=server Fri Sep 11 17:42:12 2020 OpenSSL: error:141F0006:SSL routines:tls_construct_cert_verify:EVP lib Fri Sep 11 17:42:12 2020 TLS_ERROR: BIO read tls_read_plaintext error Fri Sep 11 17:42:12 2020 TLS Error: TLS object -> incoming plaintext read error Fri Sep 11 17:42:12 2020 TLS Error: TLS handshake failed Fri Sep 11 17:42:12 2020 SIGUSR1[soft,tls-error] received, process restarting Fri Sep 11 17:42:12 2020 Restart pause, 5 second(s)Egyes bejelentett esetekben a terminál nem kéri a PIN-kód megadását. Az egyik megoldás az lenne, ha ezt a parancsot használná a PIN-kóddal történő bejelentkezéshez:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>Alternatív megoldásként újrafordíthatja az OpenVPN klienst a systemd támogatás kikapcsolásával, és a várakozásoknak megfelelően kérni fogja a PIN-kódot.
Egy másik lehetőség az OpenVPN-példányba való bejelentkezés a Viscosity klienssel, amely jobb felhasználói élményt nyújt, különösen a PIN-kód megadásához.