OpenVPN-konfiguration med Easy-RSA#
✓ |
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
Observera
Den här guiden är ett pågående arbete och kommer att uppdateras i takt med att den uppdateras. Vänligen ta hänsyn till denna status.
Den här guiden visar hur du konfigurerar OpenVPN-klienter för att logga in med en Nitrokey Pro 2 eller en Nitrokey Storage 2. För hantering av programvarunycklar kommer vi att använda Easy-RSA, ett verktyg som har utvecklats tillsammans med 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).
Vi kommer att använda Easy-RSA, eftersom det verkar ge viss flexibilitet och tillåter nyckelhantering via externa PKI:er. Vi kommer att använda den på servern för att utfärda signeringsbegäran och upprepa samma process på klienten. Begäran om signering av certifikat kommer att signeras av certifikatutfärdaren på Nitorkey HSM och sändas på nytt till servern och klienten.
Förutsättningar#
I följande dokumentation behöver vi tre olika maskiner enligt följande:
OpenVPN-server (v. 2.5) på Debian 10 (virtuell EC2-maskin - AWS)
OpenVPN-klient (v. 2.4.9) på Fedora 30 (lokal maskin)
Certifikatmyndigheten kommer att vara tillgänglig från en fristående maskin med Fedora 30 (lokal maskin).
För att kunna interagera med enheterna behöver vi OpenSC 0.20 installerat på klienten och CA-maskinen (de lokala maskinerna). Du kan följa instruktionerna för att installera den i den här länken (*Unix).
För att ladda ner beroendena på Fedora-maskiner kan vi använda denna instruktion:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
För Debian Linux finns nyare OpenSC-paket tillgängliga här.
Vi kommer att använda följande Nitrokeys för fysisk nyckelhantering:
En autentiseringsnyckel som använder Nitrokey Pro 2 (pdf).
En certifikatutfärdare som använder Nitrokey HSM 2 (pdf).
För att bygga en certifikatutfärdare på Nitrokey HSM 2 kan du följa instruktionerna i dokumentationen ` <certificate-authority.html#sign-a-server-certificate>`_.
Alternativt kan du konfigurera din egen certifikatutfärdare på en på en separat maskin, eller använda OpenVPN-tutorialen som också bygger på Easy-RSA. De två sista alternativen bygger på programvarulösningar för nyckelhantering.
Serversidan#
1. Installera OpenVPN#
Först måste vi aktivera IP-forwarding genom att redigera filen
/etc/sysctl.conf
.$ editor /etc/sysctl.confTa bort eller ändra följande rad i enlighet med detta
net.ipv4.ip_forward=1Stäng efter att ha sparat den och ange det här kommandot
$ sysctl -pNär IP-vidarebefordran är klar måste vi ladda ner den senaste versionen av OpenvPN för vår Debian 10-server, enligt ` dessa instruktioner <https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos>`__:
Byt till root och hämta GPG-nyckeln som signerade paketet.
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -Lägg till URL:erna för de lämpliga OpenVPN-paketen i filen
sources.list
.# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exitVi laddade ner OpenVPN 2.5 eftersom ”password prompt” kräver minst OpenVPN version 2.4.8 för att logga in.
Därefter laddar vi ner OpenVPN
$ sudo apt install openvpnOm du vill kontrollera versionen kan du göra det genom att ringa
--version
och skriva ut följande:$ 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. Installera Easy-RSA#
För att bygga upp PKI:n laddar vi ner den senaste versionen av Easy-RSA till server- och klientmaskinerna. För att hämta den senaste versionen går du till sidan Releases på det officiella EasyRSA GitHub-projektet, kopierar nedladdningslänken för filen som slutar på
.tgz
och klistrar sedan in den i följande kommando:
Ladda ner den senaste versionen
$ cd ~ $ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgzExtrahera tarball-filen
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. Skapa ett PKI för OpenVPN-servern#
Innan du kan skapa OpenVPN-serverns privata nyckel och certifikat måste du skapa en lokal katalog för Public Key Infrastructure på OpenVPN-servern. Du kommer att använda den här katalogen för att hantera serverens och klienternas certifikatförfrågningar, i stället för att göra dem direkt på din CA-server.
För att skapa en PKI-katalog på din OpenVPN-server måste du fylla en fil som heter
vars
med några standardvärden.
Skapa en
vars
-fil$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor varsNär filen har öppnats, klistrar du in följande två rader
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"Detta är de enda två raderna som du behöver i den här filen
vars
på din OpenVPN-server eftersom den inte kommer att användas som certifikatutfärdare. De kommer att se till att dina privata nycklar och certifikatförfrågningar är konfigurerade för att använda ECC (Elliptic Curve Cryptography) för att generera nycklar och säkra signaturer för dina klienter och OpenVPN-servern.När det gäller valet av kryptografiska algoritmer följer jag modellen i ` denna handledning <https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-centos-8>`__, och du kan anpassa dessa efter dina specifika behov.
Initialisera PKI
När du har fyllt i filen
vars
kan du fortsätta med att skapa PKI-katalogen. Kör därför easyrsa-skriptet med alternativet init-pki:$ ./easyrsa init-pkiNär du har initialiserat din PKI på OpenVPN-servern är du redo att gå vidare till nästa steg, som är att skapa en certifikatbegäran och en privat nyckel för OpenVPN-servern.
4. Skapa server.req
och server.key
.#
Nu när alla förutsättningar är installerade på din OpenVPN-server är nästa steg att generera ett nyckelpar bestående av en privat nyckel (som ska hållas hemlig) och en Certificate Signing Request (
.csr
) på din OpenVPN-server.På system där vi genererar en nyckel och en begäran lämnas dessa filer okrypterade genom att använda argumentet
nopass
, eftersom servrar vanligtvis måste startas utan att något lösenord anges. Detta genererar en okrypterad nyckel, så tänk på att skydda dess åtkomst och filbehörigheter noggrant.Tips
Konfigurationsanteckningar från 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.
Servercertifikatet ska ha följande egenskaper:
keyUsage: digitalSignature, keyEncipherment
extendedKeyUsage: serverAuth
Skapa signeringsbegäran för servern
Navigera till katalogen
~/easyrsa
på din OpenVPN-server som icke-rootanvändare och ange följande kommandon:$ cd easyrsa/ $ ./easyrsa gen-req server nopassDetta skapar en privat nyckel för servern och en certifikatförfrågningsfil som heter
server.req
.När du har ett signerat certifikat överför du det tillbaka till OpenVPN-servern.
Kopiera nyckeln till katalogen för OpenVPN-servern
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/När du har slutfört dessa steg har du skapat en privat nyckel för din OpenVPN-server. Du har också genererat en Certificate Signing Request för OpenVPN-servern.
Tips
Filtillägg för begäran om certifikatsignering
Det filtillägg som används av CA och HSM-tutorials anger att en
.csr
-fil ska skapas, men Easy-RSA skapar certifikatsigneringsförfrågningar med ett.req
-tillägg.Vi kommer att använda båda dessa tillägg, samtidigt som vi ser till att vi överför rätt filer till certifikatutfärdaren och genererar ett slutgiltigt certifikat med ett
.crt
-tillägg.I nästa avsnitt av den här guiden kommer vi att signera en
.req
-fil med vår certifikatutfärdare på HSM 2-enheten. För detta ändamål kommer jag att använda en dedikerad maskin för att signera förfrågningarna.
5. Underteckna och hämta server.crt
.#
Följande instruktioner kräver överföring av filen
server.req
(ellerserver.csr
) till CA-systemet.Själva överföringen är inte säkerhetskänslig, men det är klokt att kontrollera om den mottagna filen stämmer överens med avsändarens kopia om transporten är opålitlig.
För att gå igenom dessa steg kommer jag att förlita mig på ` dessa instruktioner <certificate-authority.html#creating-the-intermediate-certificate-authority>`_, för att signera certifikatsigneringsbegäran när vi har genererat dem med Easy-RSA.
Skriv under
server.req
filenPå den lokala maskinen som är avsedd för åtkomst till HSM kommer vi att använda verktygen i Opensc 0.20 för att signera
.req
-filen och skicka den tillbaka till OpenVPN-servern. Vi antar att vi har överfört filen från servermaskinen till CA-maskinen.Först börjar vi med att sätta in HSM Nitrokey, och skriver in den här instruktionen för att få en lista över tillgängliga nycklar.
Fråga efter listan över tillgängliga enheter
$ p11tool --list-all(Obligatoriskt steg) Om det är första gången du signerar ett certifikat med certifikatutfärdaren kanske du vill hämta URI:n för certifikatutfärdarens privata nyckel från HSM och inkludera den i konfigurationsfilen.
Observera
Nyckelns URI ska ha detta format:
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=privateSkapa en katalog
openvpn/
undercertificate-authority/
.$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/Skriv under
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.crtHämta filen
server.crt
till servermaskinen
Överför de signerade certifikaten till servern
Kopiera filerna
server.crt
ochchain.crt
till OpenVPN-servern från certifikatutfärdaren. I det här exemplet använder vi kommandotscp
enligt följande:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmpPlacera certifikaten i serverns katalog
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/serverVarning
CA-certifikat och
chain.crt
I ovanstående exempel returnerar certifikatutfärdaren det signerade certifikatet för allvarlig skada och inkluderar certifikatutfärdarens
CA.crt
som är filenchain.crt
. Detta kan göras via en osäker kanal, men klienten uppmanas att bekräfta om den mottagnachain.crt
är giltig om transporten är opålitlig.Det är möjligt att byta namn på filen
chain.crt
tillCA.crt
på målmaskinen, Vi kommer dock att användachain.crt
i nästa instruktion.
6. Konfigurera OpenVPN-servern#
En anslutning som använder TLS kräver flera certifikat och nycklar för autentisering. Nu när vi har utfärdat och signerat dem kan vi placera dem i rätt kataloger. Fördelningen av de certifikat och nycklar som måste finnas i rotkatalogen är följande:
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)På din OpenVPN-server kan du nu skapa konfigurationsfilen
server.conf
med din favorittexteditor. Filen kan konfigureras enligt dina behov, medan vi ser till att ändra sektionerna för servercertifikatet och nyckeln i enlighet med de namn du valt för filerna som vi signerat:# OpenVPN Server Certificate - CA, server key and certificate ca chain.crt cert server.crt key server.keyHär är konfigurationsfilen som vi kan använda för att testa dessa instruktioner:
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 versionFör att testa om konfigurationen fungerar korrekt kan vi använda det här kommandot:
$ sudo openvpn --server --config server.conf
7. Starta OpenVPN-tjänsten på servern#
Aktivera OpenVPN-tjänsten genom att lägga till den i systemctl och starta den med dessa kommandon:
$ sudo systemctl -f enable openvpn@server $ sudo systemctl start openvpn@serverAnvänd det här kommandot för att dubbelkontrollera om OpenVPN-tjänsten är aktiv:
$ sudo systemctl status openvpn@serverOpenVPN bör vara igång vid denna tidpunkt.
Konfiguration på klientsidan#
1. Installera OpenVPN och Easy-RSA#
Installera programvaran
Vi kan använda direkt
dnf install
för att installera OpenVPN 2.4.9 och Easy-RSA 3.0.7.$ sudo dnf install openvpn easy-rsaSedan skapar vi en katalog för Easy RSA som heter
Easy-RSA
.$ mkdir ~/easyrsaLänka det till Easy RSA-paketet som vi just installerade
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. Skapa en PKI för OpenVPN-klienten#
På samma sätt som vi skapade ett PKI på OpenVPN-servern kommer vi att skapa ett PKI med Easy-RSA på klientsidan.
3. Skapa en client.req
och client.key
.#
På samma sätt som vi utfärdade nyckelparet på servern genererar vi ett nyckelpar för klienten som kommer att bestå av filen
client.req
och filenclient.key
. Den sistnämnda måste hållas hemlig på klientmaskinen.
4. Signera client.req
och utfärda client.crt
-filen.#
För att överföra filen
client.req
till CA-maskinen använder vi samma metod som för filenserver.req
.Efter överföringen signerar vi filen med begäran om certifikatsignering på CA-maskinen med det här kommandot
$ 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. Importera client.crt
på Nitrokey från CA-maskinen.#
Efter att ha skapat filen
client.crt
ansluter vi Nitrokey Pro 2-enheten till CA-maskinen och importerar filen.crt
till Pro 2-enheten med det här kommandot:$ pkcs15-init --store-certificate client.crt --id 3Du kan se om nyckeln verkligen är lagrad på Nitrokey med det här kommandot:
$ pkcs15-tool -cEller alternativt
$ pkcs11-tool --list-objectsFör fler kommandon kan du läsa OpenSC-wikin.
6. Hämta chain.crt
-filen från CA-maskinen.#
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. Konfigurera klienten så att den kan interagera med Nitrokey#
På klientmaskinen kopplar vi in Nitrokey Pro och använder den för att upprätta en VPN-anslutning med servern. Generellt sett kräver en anslutning som använder TLS flera certifikat och nycklar för autentisering:
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyFör den här guiden kan vi använda följande
client.conf
-fil och lägga till de nödvändiga alternativen i den: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
Bestäm rätt objekt
Varje PKCS#11-leverantör kan stödja flera enheter. För att visa listan över tillgängliga objekt kan du använda följande kommando:
$ 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=%03Varje certifikat/privatnyckelpar har en unik
Serialized id
-sträng. Den serialiserade id-strängen för det begärda certifikatet ska anges i konfigurationsfilen. Vi kan göra detta genom att lägga till alternativetpkcs11-id
med enkla citattecken.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'Lägg till det serialiserade ID som hämtas i konfigurationsfilen.
Öppna filen server.conf med hjälp av din favorittextredigerare och lägg till följande rader, men var noga med att infoga dina egna
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'För ytterligare inställningar relaterade till OpenVPN-autentisering kan du också lägga till några rader för att hantera nyckelhantering, även om det är frivilligt.
Observera
Klicka för att se koden
# 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 PINFrivilligt steg
Om du behöver testa konfigurationen, med och utan token på Nitrokey, kan du lägga till rader i samma
client.conf
och kommentera/avkommentera de relevanta raderna enligt dina behov:Observera
Klicka för att se koden
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1Konfigurera OpenVPN-klienten
Den slutliga konfigurationsfilen
client.conf
bör se ut så här: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)
För att kunna upprätta en handskakning måste du konfigurera OpenSSL som ingår i 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
Med denna ändring kommer du inte att få fel som rapporterats här, här och här
Kända problem
Det finns några kända problem med OpenVPN-inloggning med OpenSC. Se dessa problem här.
8. Starta OpenVPN-klienten#
Starta OpenVPN-tjänsten på klienten
Aktivera OpenVPN-tjänsten och starta den med dessa kommandon:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.serviceAnvänd det här kommandot för att dubbelkolla om OpenVPN-tjänsten är aktiv:
$ sudo systemctl status openvpn-server@server.serviceAnge din användar-PIN
När du kör OpenVPN-klienten måste du ange Nitrokeys PIN-kod:
$ 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: ******Varning
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)I vissa rapporterade fall begärs ingen PIN-kod på terminalen. En lösning är att använda detta kommando för att logga in med PIN-koden:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>Alternativt kan du kompilera OpenVPN-klienten på nytt med inaktiverat systemd-stöd, och den kommer att be dig om PIN-koden som förväntat.
Ett annat alternativ är att logga in på din OpenVPN-instans med Viscosity-klienten, som ger en bättre användarupplevelse, särskilt när det gäller att ange PIN-koden.