Конфигуриране на OpenVPN с Easy-RSA¶
✓ |
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
Note
Това ръководство е в процес на разработване и ще бъде актуализирано според случая. Моля, вземете предвид този статус.
Това ръководство показва как да конфигурирате клиентите на OpenVPN да влизат в системата с помощта на Nitrokey Pro 2 или Nitrokey Storage 2. За управление на софтуерни ключове ще използваме Easy-RSA, помощна програма, която се развива успоредно с 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).
Ще използваме Easy-RSA, тъй като изглежда осигурява известна гъвкавост и позволява управление на ключове чрез външни PKI. Ще го използваме на сървъра, за да подадем заявка за подписване, и ще повторим същия процес на клиента. Исканията за подписване на удостоверения ще бъдат подписани от УО на HSM на Nitorkey и ще бъдат изпратени повторно до сървъра и клиента.
Предварителни условия¶
В следващата документация ще ни трябват 3 различни машини, както следва:
OpenVPN сървър (версия 2.5) на Debian 10 (виртуална машина EC2 - AWS)
Клиент на OpenVPN (версия 2.4.9) на Fedora 30 (локална машина)
Удостоверяващият орган ще бъде достъпен от самостоятелна машина с Fedora 30 (локална машина)
За да взаимодействаме с устройствата, ще трябва да инсталираме OpenSC 0.20 на клиентската машина и машината на CA (локалните машини). Можете да следвате инструкциите за настройка в тази връзка (*Unix).
За да изтеглите зависимостите на машините с Fedora, можете да използвате тази инструкция:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
За Debian Linux са налични по-нови пакети OpenSC тук.
Ще използваме следните Nitrokeys за управление на физически ключове:
Ключ за удостоверяване с помощта на Nitrokey Pro 2 (pdf)
Удостоверяващ орган (CA), който използва Nitrokey HSM 2 (pdf)
Напомняме ви, че за да изградите удостоверяващ орган на Nitrokey HSM 2, можете да следвате инструкциите, налични в документацията.
Като алтернатива можете да настроите свой собствен CA на на отделна машина или да използвате учебника за OpenVPN, който също разчита на Easy-RSA. Последните 2 варианта разчитат на софтуерни решения за управление на ключовете.
От страна на сървъра¶
1. Инсталиране на OpenVPN¶
Първо трябва да активираме IP Forwarding, като редактираме файла
/etc/sysctl.conf
.$ editor /etc/sysctl.confРазкоментирайте или редактирайте съответно следния ред
net.ipv4.ip_forward=1Затворете я, след като я запазите, и въведете тази команда
$ sysctl -pСлед като пренасочването на IP адресите бъде направено, ще трябва да изтеглим най-новата версия на OpenvPN за нашия сървър Debian 10, съгласно тези инструкции:
Променете се като root и изтеглете ключа GPG, с който е подписан пакетът
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -Добавете URL адреса на съответните пакети OpenVPN към файла
sources.list
# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exitИзтеглихме OpenVPN 2.5, тъй като „подкана за парола“ изисква поне OpenVPN версия 2.4.8 за влизане.
След това изтегляме OpenVPN
$ sudo apt install openvpnАко искате да проверите версията, можете да го направите, като извикате
--version
и отпечатате следното:$ 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. Инсталиране на Easy-RSA¶
За да изградим PKI, ще изтеглим най-новата версия на Easy-RSA на сървърните и клиентските машини. За да получите последната версия, отидете на страницата Releases на официалния проект EasyRSA GitHub, копирайте връзката за изтегляне на файла, завършващ на
.tgz
, и след това я поставете в следната команда:
Изтегляне на най-новата версия
$ cd ~ $ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgzИзвличане на тарбала
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. Създаване на PKI за OpenVPN сървъра¶
Преди да можете да създадете частния ключ и сертификата на вашия OpenVPN сървър, трябва да създадете локална директория Public Key Infrastructure на вашия OpenVPN сървър. Ще използвате тази директория, за да управлявате заявките за сертификати на сървъра и клиентите, вместо да ги правите директно на сървъра на CA.
За да създадете директория PKI на вашия OpenVPN сървър, трябва да попълните файл, наречен
vars
, с някои стойности по подразбиране.
Създаване на файл
vars
$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor varsСлед като отворите файла, поставете следните два реда
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"Това са единствените два реда, от които се нуждаете в този
vars
файл на вашия OpenVPN сървър, тъй като той няма да се използва като удостоверяващ орган. Те ще гарантират, че частните ключове и заявките за сертификати са конфигурирани да използват криптография с елиптични криви (ECC) за генериране на ключове и сигурни подписи за вашите клиенти и OpenVPN сървър.Що се отнася до избора на криптографски алгоритми, следвам модела в този урок, а вие можете да ги персонализирате според конкретните си нужди.
Иницииране на PKI
След като сте попълнили файла
vars
, можете да продължите със създаването на директорията PKI. За да направите това, стартирайте скрипта easyrsa с опцията init-pki:$ ./easyrsa init-pkiСлед като сте инициализирали PKI на OpenVPN сървъра, можете да преминете към следващата стъпка, а именно създаване на заявка за сертификат и частен ключ на OpenVPN сървъра.
4. Създаване на server.req
и server.key
¶
Сега, когато на вашия OpenVPN сървър са инсталирани всички необходими условия, следващата стъпка е да генерирате двойка ключове, съставена от частен ключ (който трябва да се пази в тайна) и заявка за подписване на сертификат (
.csr
) на вашия OpenVPN сървър.Най-общо казано, в системите, в които генерираме ключ и заявка, тези файлове се оставят некриптирани чрез аргумента
nopass
, тъй като сървърите обикновено трябва да се стартират без въвеждане на парола. Това генерира некриптиран ключ, така че имайте предвид, че защитете внимателно достъпа до него и разрешенията за файлове.Tip
Бележки за конфигурацията от 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.
Сертификатът на сървъра трябва да съдържа следното:
keyUsage: digitalSignature, keyEncipherment
extendedKeyUsage: serverAuth
Създаване на заявка за подписване за сървъра
Навлезте в директорията
~/easyrsa
на вашия OpenVPN сървър като потребител, който не е root, и въведете следните команди:$ cd easyrsa/ $ ./easyrsa gen-req server nopassТова ще създаде частен ключ за сървъра и файл със заявка за сертификат, наречен
server.req
.След като получите подписан сертификат, ще го прехвърлите обратно към сървъра на OpenVPN.
Копиране на ключа в директорията на OpenVPN сървъра
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/След като завършите тези стъпки, успешно сте създали частен ключ за вашия OpenVPN сървър. Също така сте генерирали заявка за подписване на сертификат за OpenVPN сървъра.
Tip
Заявки за подписване на ключови сертификати
Файловото разширение, което е възприето от ръководството на CA и HSM, показва създаването на
.csr
файл, но Easy-RSA създава заявки за подписване на удостоверения с разширение.req
.Ще използваме взаимозаменяемо и двете разширения, като се уверим, че сме прехвърлили правилните файлове към удостоверяващия орган и ще генерираме окончателно удостоверение с разширение
.crt
.В следващия раздел на това ръководство ще подпишем
.req
файл с нашия CA, разположен на устройството HSM 2. За тази цел ще използвам специална машина за подписване на заявките.
5. Подписване и извличане server.crt
¶
Следващите инструкции изискват прехвърляне на файла
server.req
(илиserver.csr
) в системата на CA.Самият трансфер не е чувствителен към сигурността, въпреки че е разумно да се провери дали полученият файл съвпада с копието на изпращача, ако транспортът не е доверен.
За да премина през тези стъпки, ще разчитам основно на тези инструкции, за да подпиша заявките за подписване на сертификати, след като ги генерираме с Easy-RSA.
Подписване на файла
server.req
На локалната машина, предназначена за достъп до HSM, ще използваме инструментите, предоставени от Opensc 0.20, за да подпишем файла
.req
и да го изпратим обратно към OpenVPN сървъра. Предполагаме, че сме прехвърлили файла от машината на сървъра към машината на CA.Първо започваме с включването на HSM Nitrokey и въвеждаме тази инструкция за изброяване на наличните клавиши.
Запитване за списъка с налични устройства
$ p11tool --list-all(Задължителна стъпка) Ако за първи път подписвате сертификат с удостоверяващия орган, може да искате да извлечете URI на частния ключ на удостоверяващия орган от HSM и да го включите във файла с конфигурацията.
Note
URI на ключа трябва да бъде в този формат:
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/
директория подcertificate-authority/
$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/Подпишете
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.crtИзвличане на файла
server.crt
на сървърната машина
Прехвърляне на подписаните сертификати към сървъра
От машината на CA копирайте файловете
server.crt
иchain.crt
на OpenVPN сървъра. В този пример ще използваме командатаscp
, както следва:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmpПоставете сертификатите в директорията на сървъра
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/serverWarning
Сертификат на CA и
chain.crt
В горния случай CA връща подписаното северно удостоверение и включва удостоверението на CA
CA.crt
, което еchain.crt
файл. Това може да се извърши по незащитен канал, въпреки че клиентът се насърчава да потвърди дали получениятchain.crt
е валиден, ако транспортът е ненадежден.Възможно е файлът
chain.crt
да бъде преименуван наCA.crt
на целевата машина, ние обаче ще използвамеchain.crt
в следващите инструкции.
6. Конфигуриране на OpenVPN сървъра¶
Връзката, която използва TLS, изисква множество сертификати и ключове за удостоверяване. Сега, след като ги издадохме и подписахме, можем да ги поставим в правилните директории. Разпределението на сертификатите и ключовете, които трябва да се намират в главната директория, е следното:
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)На вашия OpenVPN сървър сега можете да създадете конфигурационния файл
server.conf
с любимия си текстов редактор. Файлът може да бъде конфигуриран според вашите нужди, като ние се грижим да променим секциите със сертификата и ключа на сървъра според имената, които сте избрали за вашите файлове, които подписахме:# OpenVPN Server Certificate - CA, server key and certificate ca chain.crt cert server.crt key server.keyЕто конфигурационния файл, който можем да използваме за тестване на тези инструкции:
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 versionЗа да проверим дали конфигурацията функционира правилно, можем да използваме тази команда:
$ sudo openvpn --server --config server.conf
7. Стартирайте услугата OpenVPN на сървъра¶
Активирайте услугата OpenVPN, като я добавите в systemctl, и я стартирайте, като използвате тези команди:
$ sudo systemctl -f enable openvpn@server $ sudo systemctl start openvpn@serverЗа двойна проверка дали услугата OpenVPN е активна използвайте тази команда:
$ sudo systemctl status openvpn@serverВ този момент OpenVPN трябва да работи.
Конфигурация от страна на клиента¶
1. Инсталиране на OpenVPN и Easy-RSA¶
Инсталиране на софтуера
Можем да използваме директно
dnf install
, за да инсталираме OpenVPN 2.4.9 и Easy-RSA 3.0.7$ sudo dnf install openvpn easy-rsaСлед това създаваме като некоренна директория за Easy RSA, наречена
Easy-RSA
.$ mkdir ~/easyrsaИ го свържете с пакета Easy RSA, който току-що инсталирахме
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. Създаване на PKI за OpenVPN клиента¶
По същия начин, по който създадохме PKI на сървъра на OpenVPN, ще създадем PKI, използвайки Easy-RSA от страна на клиента.
3. Създаване на client.req
и client.key
¶
По същия начин, по който издадохме двойката ключове на сървъра, генерираме двойка ключове за клиента, която ще бъде съставена от файла
client.req
и файлаclient.key
. Последният трябва да се пази в тайна на клиентската машина.
4. Подпишете client.req
и издайте client.crt
файл¶
За да прехвърлим файла
client.req
на машината на CA, ще използваме същия метод, както за файлаserver.req
.След като бъде прехвърлен, на машината на CA подписваме файла със заявката за подписване на сертификат с тази команда
$ 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. Импортиране на client.crt
в Nitrokey от машината CA¶
След като създадем файла
client.crt
, включваме устройството Nitrokey Pro 2 в машината CA и импортираме файла.crt
в устройството Pro 2, като използваме тази команда:$ pkcs15-init --store-certificate client.crt --id 3Можете да проверите дали ключът е ефективно съхранен в Nitrokey, като използвате тази команда:
$ pkcs15-tool -cИли пък
$ pkcs11-tool --list-objectsЗа повече команди можете да се обърнете към OpenSC wiki.
6. Извличане на файла chain.crt
от машината на CA¶
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. Конфигурирайте клиента да взаимодейства с Nitrokey¶
Сега отново на клиентската машина ще включим Nitrokey Pro и ще го използваме, за да установим VPN връзка със сървъра. Най-общо казано, връзка, която използва TLS, изисква множество сертификати и ключове за удостоверяване:
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyЗа това ръководство можем да използваме следния файл
client.conf
и да добавим необходимите опции към него: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
Определяне на правилния обект
Всеки доставчик на PKCS#11 може да поддържа няколко устройства. За да видите списъка с наличните обекти, можете да използвате следната команда:
$ 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=%03Всяка двойка сертификат/частен ключ има уникален
Serialized id
низ. Сериализираният идентификационен низ на искания сертификат трябва да бъде посочен в конфигурационния файл. Можем да направим това, като добавим опциятаpkcs11-id
, като използваме единични кавички.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'Добавяне на извлечения сериализиран идентификатор към конфигурационния файл
Използвайки любимия си текстов редактор, отворете файла server.conf и добавете следните редове, като внимавате да вмъкнете своите
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'За допълнителни настройки, свързани с OpenVPN удостоверяване, можете също така да добавите няколко реда за управление на ключовете, въпреки че това не е задължително.
Note
Кликнете, за да видите кода
# 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 PINНезадължителна стъпка
Ако трябва да тествате конфигурацията със и без токена на Nitrokey, можете да добавите редове към същия
client.conf
и да коментирате/отменяте съответните редове според нуждите си:Note
Кликнете, за да видите кода
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1Конфигуриране на клиента OpenVPN
Окончателният конфигурационен файл
client.conf
трябва да изглежда като този: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)
За да се установи ръкостискане, трябва да конфигурирате OpenSSL, включен в OpenVPN.
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
С тази модификация няма да имате грешка, както е съобщено тук, тук и тук.
Известни проблеми
Съществуват някои известни проблеми, свързани с влизането в OpenVPN с OpenSC. Моля, консултирайте се с тези проблеми тук.
8. Стартиране на OpenVPN клиента¶
Стартиране на услугата OpenVPN в клиента
Активирайте услугата OpenVPN и я стартирайте, като използвате тези команди:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.serviceЗа да проверите дали услугата OpenVPN е активна, използвайте тази команда:
$ sudo systemctl status openvpn-server@server.serviceВъведете потребителския си ПИН код
При стартиране на OpenVPN клиента е необходимо да се въведе ПИН кодът на 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: ******Warning
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)В някои случаи не се изисква въвеждане на ПИН код на терминала. Един от възможните начини за заобикаляне на ситуацията е да използвате тази команда, за да влезете в системата с ПИН код:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>Алтернативно, можете да прекомпилирате OpenVPN клиента с изключена поддръжка на systemd и той ще ви поиска ПИН кода, както се очаква.
Друг вариант е да влезете в OpenVPN инстанцията си с клиента Viscosity, който осигурява по-добро потребителско изживяване, особено при въвеждането на ПИН кода.