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.#
While we keep the
client.crt
stored on the nitrokey Pro 2 device, we must retrieve thechain.crt
file on the client machine, and store it in the adequate directory. We may usescp
as in the method explained in the server section of this guide.
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.
Create the directory
ssl
inC:\Program Files\OpenVPN
and create fileopenssl.cnf
with the following content :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.