OpenVPN configuratie met Easy-RSA#
Notitie
Deze gids is werk in uitvoering, en zal regelmatig worden bijgewerkt. Houdt u alstublieft rekening met deze status.
Deze handleiding toont hoe u OpenVPN-clients kunt configureren om in te loggen met een Nitrokey Pro 2 of een Nitrokey Storage 2. Voor software sleutelbeheer zullen we Easy-RSA gebruiken, een hulpprogramma dat zich samen met OpenVPN heeft ontwikkeld.
Om de certificaten te ondertekenen gebruiken we een Nitrokey HSM 2 die is ingesteld als Certificate Authority, deze gids gaat echter niet in op het opzetten van de CA zelf (dit is duidelijk en goed gedocumenteerd hier).
We gebruiken Easy-RSA, omdat het enige flexibiliteit lijkt te bieden, en sleutelbeheer via externe PKI’s mogelijk maakt. We gebruiken het op de server om het ondertekenverzoek te doen, en herhalen hetzelfde proces op de client. De verzoeken om ondertekening van certificaten worden door de CA op de Nitorkey HSM ondertekend en opnieuw naar de server en de cliënt gezonden.
Vereisten#
In de volgende documentatie hebben we 3 verschillende machines nodig, als volgt:
OpenVPN-server (v. 2.5) op Debian 10 (EC2 virtuele machine - AWS)
OpenVPN client (v. 2.4.9) op Fedora 30 (lokale machine)
De Certificate Authority zal toegankelijk zijn vanaf een standalone machine met Fedora 30 (lokale machine)
Om met de apparaten te kunnen communiceren hebben we OpenSC 0.20 nodig, geïnstalleerd op de client en CA machine (de lokale machines). U kunt de instructies volgen om dit in te stellen in deze link (*Unix).
Om de afhankelijkheden te downloaden op Fedora machines kunnen we deze instructie volgen:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
Voor Debian Linux zijn recentere OpenSC-pakketten beschikbaar hier.
We zullen de volgende Nitrokeys gebruiken voor het fysieke sleutelbeheer:
Een authenticatiesleutel met de Nitrokey Pro 2 (pdf)
Een certificeringsinstantie (CA) die gebruikmaakt van de Nitrokey HSM 2 (pdf)
Ter herinnering, om een Certificaat Autoriteit op Nitrokey HSM 2 te bouwen, kunt u de beschikbare instructies ` in de documentatie <certificate-authority.html#sign-a-server-certificate>`_ volgen.
Als alternatief kunt u uw eigen CA opzetten op een ` op een aparte machine <https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-ubuntu-20-04>`_, of u kunt de OpenVPN tutorial gebruiken die ook vertrouwt op Easy-RSA. De laatste 2 opties vertrouwen op software oplossingen voor sleutelbeheer.
Serverzijde#
OpenVPN installeren#
Eerst moeten we IP forwarding inschakelen door het bestand
/etc/sysctl.conf
te bewerken$ editor /etc/sysctl.conf
Haal het commentaar weg of wijzig de volgende regel dienovereenkomstig
net.ipv4.ip_forward=1
Sluit na het opslaan, en voer dit commando in
$ sysctl -p
Zodra IP forwarding gedaan is, moeten we de laatste versie van OpenvPN downloaden voor onze Debian 10 server, volgens deze instructies:
Ga naar root en download de GPG sleutel die het pakket ondertekende
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -
Voeg de URL van de geschikte OpenVPN pakketten toe aan het
sources.list
bestand# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exit
We hebben OpenVPN 2.5 gedownload omdat “password prompt” minstens OpenVPN ` versie 2.4.8 <https://community.openvpn.net/openvpn/ticket/1215>`_ vereist om in te loggen.
Vervolgens downloaden we OpenVPN
$ sudo apt install openvpn
Als u de versie wilt controleren, kan dat door
--version
aan te roepen en het volgende af te drukken:$ 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
Gemakkelijk-RSA installeren#
Om de PKI te bouwen, zullen we de laatste versie van Easy-RSA downloaden op de server en client machines. Om de laatste versie te krijgen, ga je naar de Releases pagina op het officiële EasyRSA GitHub project, kopieer je de download link voor het bestand dat eindigt op .tgz
, en plak je deze in het volgende commando:
Download de laatste versie
$ cd ~ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgz
Pak de tarball uit
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. Maak een PKI voor OpenVPN server#
Voordat u de private sleutel en het certificaat van uw OpenVPN server kunt aanmaken, moet u een lokale Public Key Infrastructure directory aanmaken op uw OpenVPN server. U zult deze directory gebruiken om de certificaataanvragen van de server en clients te beheren, in plaats van ze direct op uw CA server te doen.
Om een PKI directory op uw OpenVPN server te bouwen, moet u een bestand met de naam vars
vullen met enkele standaardwaarden.
Maak een
vars
bestand$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor vars
Als het bestand geopend is, plak dan de volgende twee regels in
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"
Dit zijn de enige twee regels die u nodig heeft in dit
vars
bestand op uw OpenVPN server aangezien het niet gebruikt zal worden als een Certificaat Autoriteit. Zij zullen ervoor zorgen dat uw private sleutels en certificaataanvragen geconfigureerd zijn om Elliptic Curve Cryptography (ECC) te gebruiken om sleutels te genereren, en veilige handtekeningen voor uw clients en OpenVPN server.Wat de keuze van de cryptografische algoritmen betreft, volg ik het model in deze handleiding, en u kunt deze aanpassen aan uw specifieke behoeften.
De PKI initialiseren
Zodra u het
vars
bestand heeft gevuld, kunt u verder gaan met het aanmaken van de PKI directory. Draai hiervoor het easyrsa script met de init-pki optie:$ ./easyrsa init-pki
Nadat u uw PKI op de OpenVPN server hebt geïnitialiseerd, bent u klaar om over te gaan naar de volgende stap, namelijk het aanmaken van een OpenVPN server certificaataanvraag en private sleutel.
4. Maak server.req
en server.key
.#
Nu dat uw OpenVPN server alle vereisten heeft geïnstalleerd, is de volgende stap het genereren van een sleutelpaar bestaande uit een private sleutel (om geheim te houden), en een Certificate Signing Request (.csr
) op uw OpenVPN server.
In het algemeen, op systemen waar we een sleutel en verzoek genereren, worden deze bestanden onversleuteld gelaten door het nopass
argument te gebruiken, aangezien servers meestal moeten opstarten zonder enige wachtwoordinvoer. Dit genereert een onversleutelde sleutel, dus let op beveilig de toegang en bestandspermissies ervan zorgvuldig.
Tip
Configuratie nota’s van OpenVPN:
De server, en elke client, moeten hun eigen cert en key bestand hebben. De server en alle clients zullen hetzelfde CA-bestand gebruiken.
Het certificaat van de server moet het volgende hebben:
keyUsage: digitalSignature, keyEncipherment
extendedKeyUsage: serverAuth
Maak de ondertekeningsaanvraag voor de server
Navigeer naar de
~/easyrsa
directory op uw OpenVPN Server als uw niet-root gebruiker, en voer de volgende commando’s in:$ cd easyrsa/ $ ./easyrsa gen-req server nopass
Dit zal een private sleutel voor de server aanmaken en een certificaat aanvraag bestand genaamd
server.req
.Zodra u een ondertekend certificaat hebt, brengt u het terug naar de OpenVPN server.
Kopieer de sleutel naar de OpenVPN server directory
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/
Na het voltooien van deze stappen, heeft u met succes een private sleutel voor uw OpenVPN server aangemaakt. U heeft ook een Certificate Signing Request gegenereerd voor de OpenVPN server.
Tip
Bestandsextensies voor verzoeken om ondertekening van certificaten
De bestandsextensie die door de CA- en HSM-handleiding wordt gebruikt, geeft aan dat er een
.csr
bestand moet worden aangemaakt, maar Easy-RSA maakt certificaatondertekeningsverzoeken aan met een.req
extensie.We zullen beide extensies door elkaar gebruiken, terwijl we ervoor zorgen dat we de juiste bestanden naar de Certificate Authority sturen, en een definitief certificaat genereren met een
.crt
extensie.
In de volgende sectie van deze gids zullen we een .req
bestand ondertekenen met onze CA die op het HSM 2 apparaat is geïnstalleerd. Voor dit doel zal ik een speciale machine gebruiken om de verzoeken te ondertekenen.
5. Tekenen en ophalen server.crt
#
De volgende instructies vereisen de overdracht van het server.req
(of server.csr
) bestand naar het CA systeem.
De overdracht zelf is niet gevoelig voor beveiliging, hoewel het verstandig is te controleren of het ontvangen bestand overeenkomt met de kopie van de afzender, als het transport niet vertrouwd is.
Om deze stappen te doorlopen, zal ik uitvoerig gebruik maken van deze instructies, om de verzoeken voor het ondertekenen van de certificaten te ondertekenen, nadat we ze met Easy-RSA hebben gegenereerd.
Onderteken het server.req
bestand#
Op de lokale machine voor toegang tot de HSM zullen we de tools van Opensc 0.20 gebruiken om het .req
bestand te ondertekenen, en het terug te sturen naar de OpenVPN server. We nemen aan dat we het bestand hebben overgebracht van de server machine naar de CA machine.
We beginnen met het aansluiten van de HSM Nitrokey, en voeren deze instructie in om de beschikbare toetsen op te sommen.
De lijst van beschikbare apparaten opvragen
$ p11tool --list-all
(Verplichte stap) Als dit de eerste keer is dat u een certificaat ondertekent met de CA, wilt u misschien de URI van de private sleutel van de CA ophalen van de HSM en deze opnemen in het configuratiebestand.
De URI van de sleutel moet in dit formaat zijn:
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
Maak
openvpn/
map ondercertificate-authority/
$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/
Onderteken de
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
5.2. Ophalen van het server.crt
bestand naar de server machine#
Breng de ondertekende certificaten over naar de server
Kopieer vanaf de CA machine de bestanden
server.crt
enchain.crt
naar de OpenVPN server. In dit voorbeeld gebruiken we hetscp
commando als volgt:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmp
Plaats de certificaten in de map van de server
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/server
Waarschuwing
CA Certificaat en
chain.crt
In het bovenstaande stuurt de CA het ondertekende sever certificaat terug, en voegt het CA certificaat
CA.crt
bij, dat hetchain.crt
bestand is. Dit kan over een onveilig kanaal, maar de client wordt aangemoedigd om te bevestigen of de ontvangenchain.crt
geldig is, als het transport niet vertrouwd is.Het is mogelijk om het bestand
chain.crt
te hernoemen naarCA.crt
op de doelmachine, maar we zullenchain.crt
gebruiken in de volgende instructies.
De OpenVPN server configureren#
Een verbinding die gebruik maakt van TLS vereist meerdere certificaten en sleutels voor authenticatie. Nu dat we deze hebben uitgegeven en ondertekend, kunnen we ze in de juiste directories plaatsen. De verdeling van de certificaten en sleutels die in de root directory moeten staan zijn de volgende:
Het root-certificaatbestand (CA.crt of chain.crt in onze opstelling)
Servercertificaat
Server sleutel
Diffie Hellman Parameters (optioneel)
Op uw OpenVPN server kunt u nu het configuratiebestand server.conf
aanmaken met uw favoriete tekst editor. Het bestand kan worden geconfigureerd volgens uw behoeften, terwijl wij ervoor zorgen om de server certificaat en sleutel secties te wijzigen volgens de namen die u hebt gekozen voor de uw de bestanden die we hebben ondertekend:
# OpenVPN Server Certificate - CA, server key and certificate
ca chain.crt
cert server.crt
key server.key
Hier is het configuratiebestand dat we kunnen gebruiken om deze instructies te testen:
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
Om te testen of de configuratie goed werkt, kunnen we dit commando gebruiken:
$ sudo openvpn --server --config server.conf
7. Start de OpenVPN service op de server#
Schakel de OpenVPN service in door het toe te voegen aan systemctl, en start het met deze commando’s:
$ sudo systemctl -f enable openvpn@server
$ sudo systemctl start openvpn@server
Om dubbel te controleren of de OpenVPN service actief is, gebruik dit commando:
$ sudo systemctl status openvpn@server
De OpenVPN zou op dit punt moeten draaien.
Client-zijde configuratie#
Installeer OpenVPN en Easy-RSA#
Installeer de software
We kunnen direct
dnf install
gebruiken om OpenVPN 2.4.9 en Easy-RSA 3.0.7 te installeren$ sudo dnf installeer openvpn easy-rsa
Dan maken we als niet-root een directory aan voor Easy RSA genaamd
Easy-RSA
$ mkdir ~/easyrsa
En koppel het aan het Easy RSA pakket dat we net geïnstalleerd hebben
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. Maak een PKI voor de OpenVPN-cliënt#
Op dezelfde manier als we een PKI op de OpenVPN server hebben gemaakt, zullen we een PKI met Easy-RSA aan de cliëntzijde maken.
3. Maak een client.req
en client.key
#
Op dezelfde manier als we het sleutelpaar op de sever hebben uitgegeven, genereren we een sleutelpaar voor de client dat zal bestaan uit het client.req
bestand en het client.key
bestand. Dit laatste moet op de client machine geheim worden gehouden.
4. Onderteken client.req
en geef het client.crt
bestand uit#
Om het client.req
bestand naar de CA machine over te brengen, zullen we dezelfde methode gebruiken als we voor het server.req
bestand deden.
Na de overdracht ondertekenen we op de CA-machine het bestand met het verzoek om ondertekening van het certificaat met dit commando
$ 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. Importeer client.crt
op de Nitrokey van de CA machine#
Nadat we het client.crt
bestand hebben gemaakt, sluiten we het Nitrokey Pro 2 apparaat aan op de CA machine, en importeren we het .crt
naar het Pro 2 apparaat met dit commando:
$ pkcs15-init --store-certificate client.crt --id 3
Je kunt zien of de sleutel effectief op de Nitrokey is opgeslagen met dit commando:
$ pkcs15-tool -c
Of anders
$ pkcs11-tool --list-objects
Voor meer commando’s kunt u de OpenSC wiki raadplegen.
6. Haal het chain.crt
bestand op van de CA machine#
Terwijl we het client.crt
stored on the nitrokey Pro 2 device, we must retrieve the chain.crt
bestand op de client machine bewaren, en het in de juiste directory opslaan. We kunnen scp
gebruiken zoals in de methode uitgelegd in het server-gedeelte van deze gids.
7. Configureer de client voor interactie met de Nitrokey#
Nu, terug op de client-machine, zullen we de Nitrokey Pro aansluiten en gebruiken om de VPN-verbinding met de server tot stand te brengen. In het algemeen zijn voor een verbinding die gebruik maakt van TLS meerdere certificaten en sleutels nodig voor de authenticatie:
Het root-certificaatbestand (chain.crt)
Klantcertificaat
Klant sleutel
Voor deze gids kunnen we het volgende client.conf
bestand, en de vereiste opties dienovereenkomstig toevoegen:
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
Bepaal het juiste object
Elke PKCS#11 provider kan meerdere apparaten ondersteunen. Om de lijst met beschikbare objecten te bekijken, kun je het volgende commando gebruiken:
$ 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
Elk certificaat/privésleutelpaar heeft een unieke
Serialized id
string. De geserialiseerde id-string van het aangevraagde certificaat moet in het configuratiebestand worden gespecificeerd. We kunnen dit doen door de optiepkcs11-id
toe te voegen met enkele aanhalingstekens.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'
Voeg de opgehaalde geserialiseerde ID toe aan het configuratiebestand
Open met uw favoriete teksteditor het bestand server.conf en voeg de volgende regels toe, waarbij u erop let dat u uw eigen
Serialized id
invoegt: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'
Voor bijkomende instellingen in verband met OpenVPN authenticatie, kunt u ook enkele lijnen toevoegen om sleutelbeheer af te handelen, hoewel dit optioneel is.
Notitie
Klik om de code te bekijken
# 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
Optionele stap
Als u de configuratie moet testen, met en zonder het token op de Nitrokey, kunt u regels toevoegen aan dezelfde
client.conf
en de relevante regels becommentariëren/oncommentariëren naargelang uw behoeften:Notitie
Klik om de code te bekijken
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1
De OpenVPN-client configureren
Het uiteindelijke configuratiebestand
client.conf
zou er als volgt uit moeten zien: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 1
Bekende problemen
Er zijn enkele bekende problemen met betrekking tot OpenVPN login met OpenSC. Raadpleeg deze problemen hier.
Start de OpenVPN-client#
Start de OpenVPN-dienst op de client
Schakel de OpenVPN service in, en start het met deze commando’s:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.service
Om dubbel te controleren of de OpenVPN service actief is, gebruik dit commando:
$ sudo systemctl status openvpn-server@server.service
Voer uw gebruikers-PIN in
Bij het uitvoeren van OpenVPN client, moet Nitrokey’s PIN ingevoerd worden:
$ 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: ******
Waarschuwing
Helaas lijkt OpenVPN niet in staat te zijn een handshake tot stand te brengen en stopt bij een foutmelding zoals hier, hier <x id=”227”></x id=”295”></x> en `hier
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)
In sommige gerapporteerde gevallen wordt niet om een PIN gevraagd op de terminal. Een workaround zou zijn om dit commando te gebruiken om in te loggen met de PIN:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>
Als alternatief kunt u ` de OpenVPN <https://forums.openvpn.net/viewtopic.php?f=4&t=23318>`_ client opnieuw compileren met systemd ondersteuning uitgeschakeld, en deze zal u zoals verwacht om de PIN vragen.
Een andere optie zou zijn om in te loggen op uw OpenVPN instance met de Viscosity client die een betere gebruikerservaring biedt, vooral voor het invoeren van de PIN.