Konfigurace OpenVPN pomocí Easy-RSA#
✓ |
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
Poznámka
Na této příručce se pracuje a bude průběžně aktualizována. Vezměte prosím tento stav na vědomí.
Tento návod ukazuje, jak nakonfigurovat klienty OpenVPN pro přihlášení pomocí Nitrokey Pro 2 nebo Nitrokey Storage 2. Pro správu softwarových klíčů budeme používat Easy-RSA, nástroj, který se vyvíjel souběžně s OpenVPN.
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).
Použijeme Easy-RSA, protože se zdá, že poskytuje určitou flexibilitu a umožňuje správu klíčů prostřednictvím externích PKI. Použijeme ji na serveru k vydání požadavku na podepsání a stejný postup zopakujeme na klientovi. Žádosti o podepsání certifikátu budou podepsány certifikační autoritou na HSM Nitorkey a znovu odeslány na server a klientovi.
Předpoklady#
V následující dokumentaci budeme potřebovat 3 různé stroje:
Server OpenVPN (v. 2.5) na Debianu 10 (virtuální stroj EC2 - AWS)
Klient OpenVPN (v. 2.4.9) na Fedoře 30 (místní počítač)
Certifikační autorita bude přístupná ze samostatného počítače s Fedorou 30 (místní počítač).
K interakci se zařízeními budeme potřebovat OpenSC 0.20 nainstalovaný na klientském počítači a počítači CA (místní počítače). Můžete postupovat podle pokynů k nastavení v tomto odkazu (*Unix).
Pro stažení závislostí na počítačích Fedora můžeme použít tento návod:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
Pro Debian Linux jsou novější balíčky OpenSC k dispozici zde.
Pro správu fyzických klíčů budeme používat následující Nitrokeys:
Ověřovací klíč pomocí Nitrokey Pro 2 (pdf).
Certifikační autorita (CA) používající Nitrokey HSM 2 (pdf).
Připomínáme, že pro vytvoření certifikační autority v systému Nitrokey HSM 2 můžete postupovat podle pokynů dostupných v dokumentaci.
Případně můžete nastavit vlastní certifikační autoritu na na samostatném počítači, nebo použít výukový program OpenVPN, který se také spoléhá na Easy-RSA. Poslední dvě možnosti spoléhají na softwarová řešení pro správu klíčů.
Na straně serveru#
1. Nainstalujte OpenVPN#
Nejprve musíme povolit předávání IP adres úpravou souboru
/etc/sysctl.conf
.$ editor /etc/sysctl.confZrušte komentář nebo odpovídajícím způsobem upravte následující řádek
net.ipv4.ip_forward=1Po uložení jej zavřete a zadejte tento příkaz
$ sysctl -pPo dokončení přesměrování IP adres musíme stáhnout nejnovější verzi OpenvPN pro náš server Debian 10 podle těchto pokynů:
Změňte se na uživatele root a stáhněte klíč GPG, kterým je balíček podepsán.
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -Přidejte adresu URL příslušných balíčků OpenVPN do souboru
sources.list
.# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exitStáhli jsme OpenVPN 2.5, protože „výzva k zadání hesla“ vyžaduje k přihlášení alespoň OpenVPN verze 2.4.8.
Dále stáhneme OpenVPN
$ sudo apt install openvpnPokud chcete zkontrolovat verzi, je to možné voláním
--version
a vypsáním následujícího:$ 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. Nainstalujte Easy-RSA#
Pro vytvoření PKI stáhneme na server a klientské počítače nejnovější verzi Easy-RSA. Chcete-li získat nejnovější verzi, přejděte na stránku Releases na oficiálním projektu EasyRSA GitHub, zkopírujte odkaz na stažení souboru končícího
.tgz
a poté jej vložte do následujícího příkazu:
Stáhněte si nejnovější verzi
$ cd ~ $ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgzRozbalení balíčku tarball
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. Vytvoření PKI pro server OpenVPN#
Před vytvořením soukromého klíče a certifikátu serveru OpenVPN je třeba na serveru OpenVPN vytvořit místní adresář infrastruktury veřejných klíčů. Tento adresář budete používat ke správě žádostí o certifikát serveru a klientů, místo abyste je zadávali přímo na serveru certifikační autority.
Chcete-li na serveru OpenVPN vytvořit adresář PKI, musíte naplnit soubor s názvem
vars
některými výchozími hodnotami.
Vytvoření souboru
vars
$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor varsPo otevření souboru vložte následující dva řádky
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"Toto jsou jediné dva řádky, které potřebujete v tomto souboru
vars
na serveru OpenVPN, protože nebude použit jako certifikační autorita. Zajistí, že vaše soukromé klíče a žádosti o certifikát budou nakonfigurovány tak, aby používaly kryptografii eliptických křivek (ECC) pro generování klíčů a bezpečné podpisy pro vaše klienty a server OpenVPN.Co se týče výběru kryptografických algoritmů, řídím se vzorem uvedeným v tomto návodu a můžete si je přizpůsobit podle svých konkrétních potřeb.
Inicializace infrastruktury PKI
Po vyplnění souboru
vars
můžete pokračovat ve vytváření adresáře PKI. Za tímto účelem spusťte skript easyrsa s volbou init-pki:$ ./easyrsa init-pkiPo inicializaci PKI na serveru OpenVPN můžete přejít k dalšímu kroku, kterým je vytvoření žádosti o certifikát serveru OpenVPN a soukromého klíče.
4. Vytvořte server.req
a server.key
.#
Nyní, když má váš server OpenVPN nainstalovány všechny předpoklady, je dalším krokem vygenerování páru klíčů složeného ze soukromého klíče (který má zůstat utajen) a žádosti o podepsání certifikátu (
.csr
) na serveru OpenVPN.Obecně lze říci, že v systémech, kde generujeme klíč a požadavek, se tyto soubory nechávají nezašifrované pomocí argumentu
nopass
, protože servery se obvykle musí spouštět bez zadávání hesla. Tím se vygeneruje nešifrovaný klíč, proto dbejte na pečlivou ochranu jeho přístupových a souborových práv.Tip
Poznámky ke konfiguraci z OpenVPN:
- The server, and each client, must have their own cert and key
file. The server and all clients will use the same CA file.
Certifikát serveru by měl obsahovat následující údaje:
keyUsage: digitalSignature, keyEncipherment
extendedKeyUsage: serverAuth
Vytvoření požadavku na podepsání serveru
Přejděte do adresáře
~/easyrsa
na serveru OpenVPN jako uživatel bez oprávnění root a zadejte následující příkazy:$ cd easyrsa/ $ ./easyrsa gen-req server nopassTím se vytvoří soukromý klíč pro server a soubor žádosti o certifikát s názvem
server.req
.Jakmile budete mít podepsaný certifikát, přenesete jej zpět na server OpenVPN.
Zkopírování klíče do adresáře serveru OpenVPN
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/Po dokončení těchto kroků jste úspěšně vytvořili soukromý klíč pro server OpenVPN. Také jste vygenerovali žádost o podepsání certifikátu pro server OpenVPN.
Tip
Přípony souborů pro žádosti o podepsání certifikátu
Přípona souboru, kterou přejímá výukový program certifikační autority a HSM, označuje vytvoření souboru
.csr
, avšak Easy-RSA vytváří žádosti o podepsání certifikátu s příponou.req
.Obě přípony budeme používat střídavě, přičemž se ujistíme, že do certifikační autority přeneseme správné soubory, a vygenerujeme konečný certifikát s příponou
.crt
.V další části této příručky podepíšeme
.req
soubor s naší certifikační autoritou nasazenou v zařízení HSM 2. K tomuto účelu budu používat vyhrazený stroj pro podepisování požadavků.
5. Podepsat a načíst server.crt
#
Následující pokyny vyžadují přenos souboru
server.req
(neboserver.csr
) do systému CA.Samotný přenos není bezpečnostně citlivý, i když je vhodné ověřit, zda se přijatý soubor shoduje s kopií odesílatele, pokud je přenos nedůvěryhodný.
Při těchto krocích se budu ve velké míře opírat o tento návod, abychom mohli podepisovat žádosti o podepsání certifikátu, jakmile je vygenerujeme pomocí Easy-RSA.
Podepište soubor
server.req
Na místním počítači určeném pro přístup k HSM použijeme nástroje poskytované Opensc 0.20 k podepsání souboru
.req
a jeho odeslání zpět na server OpenVPN. Předpokládáme, že jsme soubor přenesli ze serverového počítače do počítače certifikační autority.Nejprve začneme připojením HSM Nitrokey a zadáme tento pokyn pro výpis dostupných kláves.
Dotaz na seznam dostupných zařízení
$ p11tool --list-all(Povinný krok) Pokud podepisujete certifikát pomocí certifikační autority poprvé, možná budete chtít načíst URI soukromého klíče certifikační autority z HSM a zahrnout jej do konfiguračního souboru.
Poznámka
URI klíče by měl být v tomto formátu:
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=privateVytvoření
openvpn/
adresáře podcertificate-authority/
.$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/Podepište
server.req
.$ 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.crt5.2. Načtení souboru
server.crt
do počítače serveru
Přenos podepsaných certifikátů na server
Z počítače certifikační autority zkopírujte soubory
server.crt
achain.crt
na server OpenVPN. V tomto příkladu použijeme příkazscp
podle následujících pokynů:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmpUmístění certifikátů do adresáře serveru
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/serverVarování
Certifikát certifikační autority a
chain.crt
Ve výše uvedeném případě certifikační autorita vrátí podepsaný certifikát sever a obsahuje certifikát certifikační autority
CA.crt
, což jechain.crt
soubor. To lze provést nezabezpečeným kanálem, ačkoli klientovi se doporučuje potvrdit, zda je přijatýchain.crt
platný, pokud je transport nedůvěryhodný.Na cílovém počítači je možné přejmenovat soubor
chain.crt
naCA.crt
, my však v dalších pokynech použijemechain.crt
.
6. Konfigurace serveru OpenVPN#
Připojení, které používá TLS, vyžaduje více certifikátů a klíčů pro ověřování. Nyní, když jsme je vydali a podepsali, je můžeme umístit do správných adresářů. Rozdělení certifikátů a klíčů, které musí být umístěny v kořenovém adresáři, je následující:
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)Na serveru OpenVPN nyní můžete vytvořit konfigurační soubor
server.conf
pomocí svého oblíbeného textového editoru. Soubor můžete nakonfigurovat podle svých potřeb, přičemž se ujistíme, že jste změnili sekce certifikátu serveru a klíče podle názvů, které jste zvolili pro vaše soubory, které jsme podepsali:# OpenVPN Server Certificate - CA, server key and certificate ca chain.crt cert server.crt key server.keyZde je konfigurační soubor, který můžeme použít pro testování těchto pokynů:
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 versionPro otestování, zda konfigurace funguje správně, můžeme použít tento příkaz:
$ sudo openvpn --server --config server.conf
7. Spusťte službu OpenVPN na serveru#
Službu OpenVPN povolte přidáním do systemctl a spusťte ji pomocí těchto příkazů:
$ sudo systemctl -f enable openvpn@server $ sudo systemctl start openvpn@serverChcete-li dvakrát ověřit, zda je služba OpenVPN aktivní, použijte tento příkaz:
$ sudo systemctl status openvpn@serverV tomto okamžiku by měla být spuštěna síť OpenVPN.
Konfigurace na straně klienta#
1. Nainstalujte OpenVPN a Easy-RSA#
Instalace softwaru
K instalaci OpenVPN 2.4.9 a Easy-RSA 3.0.7 můžeme použít přímo
dnf install
.$ sudo dnf install openvpn easy-rsaPoté vytvoříme jako nekořenový adresář pro Easy RSA s názvem
Easy-RSA
.$ mkdir ~/easyrsaA propojte jej s balíčkem Easy RSA, který jsme právě nainstalovali.
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. Vytvoření PKI pro klienta OpenVPN#
Stejným způsobem, jakým jsme vytvořili PKI na serveru OpenVPN, vytvoříme PKI pomocí Easy-RSA na straně klienta.
3. Vytvořte client.req
a client.key
.#
Stejným způsobem, jakým jsme vydali pár klíčů na serveru, vygenerujeme pár klíčů pro klienta, který se bude skládat ze souboru
client.req
a souboruclient.key
. Ten musí být na klientském počítači utajen.
4. Podepište client.req
a vydejte client.crt
soubor.#
Pro přenos souboru
client.req
do počítače CA použijeme stejný postup jako v případě souboruserver.req
.Po přenosu podepíšeme na počítači certifikační autority soubor se žádostí o podepsání certifikátu tímto příkazem.
$ 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 client.crt
na Nitrokey z počítače CA.#
Po vytvoření souboru
client.crt
připojíme zařízení Nitrokey Pro 2 k počítači CA a pomocí tohoto příkazu importujeme.crt
do zařízení Pro 2:$ pkcs15-init --store-certificate client.crt --id 3Pomocí tohoto příkazu můžete zjistit, zda je klíč v systému Nitrokey skutečně uložen:
$ pkcs15-tool -cPřípadně
$ pkcs11-tool --list-objectsDalší příkazy najdete na OpenSC wiki.
6. Získejte soubor chain.crt
ze stroje CA.#
Zatímco
client.crt
stored on the nitrokey Pro 2 device, we must retrieve thechain.crt
soubor ponecháme na klientském počítači a uložíme jej do příslušného adresáře. Můžeme použítscp
jako v metodě vysvětlené v serverové části této příručky.
7. Konfigurace klienta pro interakci se systémem Nitrokey#
Nyní v klientském počítači připojíme Nitrokey Pro a použijeme jej k navázání spojení VPN se serverem. Obecně lze říci, že připojení, které využívá TLS, vyžaduje pro ověření více certifikátů a klíčů:
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyPro tento návod můžeme použít následující soubor
client.conf
a přidat do něj požadované možnosti: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
Určete správný objekt
Každý zprostředkovatel PKCS#11 může podporovat více zařízení. Pro zobrazení seznamu dostupných objektů můžete použít následující příkaz:
$ 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=%03Každý pár certifikát/soukromý klíč má jedinečný
Serialized id
řetězec. V konfiguračním souboru by měl být uveden serializovaný řetězec id požadovaného certifikátu. To můžeme provést přidáním možnostipkcs11-id
s použitím jednoduchých uvozovek.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'Přidání načteného serializovaného ID do konfiguračního souboru
Pomocí oblíbeného textového editoru otevřete soubor server.conf a přidejte následující řádky, přičemž dbejte na to, abyste vložili vlastní
Serialized id
: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'Pro další nastavení týkající se ověřování OpenVPN můžete také přidat několik řádků pro správu klíčů, i když je to nepovinné.
Poznámka
Kliknutím zobrazíte kód
# 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 PINVolitelný krok
Pokud potřebujete otestovat konfiguraci s tokenem a bez něj na Nitrokey, můžete přidat řádky do stejného
client.conf
a příslušné řádky okomentovat/odkomentovat podle svých potřeb:Poznámka
Kliknutím zobrazíte kód
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1Konfigurace klienta OpenVPN
Konečný konfigurační soubor
client.conf
by měl vypadat takto: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)
Aby bylo možné vytvořit handshake, je třeba nakonfigurovat protokol OpenSSL, který je součástí OpenVPN.
Vytvořte adresář
ssl
vC:\Program Files\OpenVPN
a vytvořte souboropenssl.cnf
s následujícím obsahem :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
Po této úpravě nebudete mít chybu, jak je uvedeno zde, zde a zde.
Známé problémy
Existují některé známé problémy související s přihlášením k OpenVPN pomocí OpenSC. Tyto problémy naleznete zde.
8. Spusťte klienta OpenVPN#
Spuštění služby OpenVPN v klientovi
Povolte službu OpenVPN a spusťte ji pomocí těchto příkazů:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.serviceChcete-li překontrolovat, zda je služba OpenVPN aktivní, použijte tento příkaz:
$ sudo systemctl status openvpn-server@server.serviceZadejte svůj uživatelský kód PIN
Při spuštění klienta OpenVPN je třeba zadat PIN kód Nitrokey:
$ 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: ******Varování
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)V některých hlášených případech nevyžaduje zadání kódu PIN na terminálu. Jedním z řešení by bylo použití tohoto příkazu pro přihlášení pomocí kódu PIN:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>Případně můžete ` znovu zkompilovat klienta OpenVPN <https://forums.openvpn.net/viewtopic.php?f=4&t=23318>`_ s vypnutou podporou systemd a ten vás podle očekávání vyzve k zadání kódu PIN.
Další možností je přihlásit se k instanci OpenVPN pomocí klienta Viscosity, který poskytuje lepší uživatelský komfort, zejména při zadávání kódu PIN.