„OpenVPN“ konfigūracija su „Easy-RSA#
Pastaba
Šis vadovas yra nebaigtas rengti ir bus atnaujinamas. Prašome atsižvelgti į šį statusą.
Šiame vadove parodyta, kaip sukonfigūruoti „OpenVPN“ klientus prisijungti naudojant „Nitrokey Pro 2“ arba „Nitrokey Storage 2“. Programiniam raktų valdymui naudosime Easy-RSA, įrankį, kuris buvo tobulinamas kartu su OpenVPN.
Sertifikatams pasirašyti naudosime „Nitrokey HSM 2“, nustatytą kaip Sertifikatų tarnyba, tačiau šiame vadove neaptariamas pačios CA nustatymas (jis yra aiškus ir gerai dokumentuotas čia).
Naudosime „Easy-RSA“, nes atrodo, kad ji užtikrina tam tikrą lankstumą ir leidžia valdyti raktus per išorinius PKI. Ją naudosime serveryje pasirašymo užklausai pateikti ir tą patį procesą pakartosime klientui. Sertifikatų pasirašymo prašymus pasirašys „Nitorkey HSM“ CA ir pakartotinai perduos juos serveriui ir klientui.
Būtinosios sąlygos#
Toliau pateiktoje dokumentacijoje mums reikės 3 skirtingų mašinų:
„OpenVPN“ serveris (2.5 versija) „Debian 10“ sistemoje (EC2 virtuali mašina - AWS)
„OpenVPN“ klientas (v. 2.4.9) „Fedora 30“ (vietiniame kompiuteryje)
Sertifikatų tarnyba bus pasiekiama iš atskiro kompiuterio su „Fedora 30“ (vietinis kompiuteris).
Kad galėtume sąveikauti su įrenginiais, reikės OpenSC 0.20, įdiegtos kliento ir CA kompiuteryje (vietiniuose kompiuteriuose). Galite vadovautis instrukcijomis, kaip ją nustatyti šioje nuorodoje (*Unix).
Norėdami atsisiųsti priklausomybes „Fedora“ kompiuteriuose, galime pasinaudoti šia instrukcija:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
„Debian Linux“ atveju naujesnius „OpenSC“ paketus galima rasti čia.
Fiziniam raktų valdymui naudosime šiuos Nitrokeys:
Autentifikavimo raktas naudojant „Nitrokey Pro 2“ (pdf).
Sertifikatų institucija (CA), naudojanti Nitrokey HSM 2 (pdf).
Primename, kad norėdami sukurti „Nitrokey HSM 2“ sertifikatų tarnybą, galite vadovautis instrukcijomis, pateiktomis ` dokumentuose <certificate-authority.html#sign-a-server-certificate>`_.
Taip pat galite nustatyti savo CA atskirame kompiuteryje arba naudoti „OpenVPN“ vadovėlį, kuris taip pat remiasi Easy-RSA. Pastarosios 2 galimybės remiasi raktų valdymo programinės įrangos sprendimais.
Serverio pusėje#
Įdiekite „OpenVPN#
Pirmiausia reikia įjungti IP persiuntimą redaguojant
/etc/sysctl.conf
failą.$ editor /etc/sysctl.conf
Panaikinkite arba atitinkamai redaguokite šią eilutę
net.ipv4.ip_forward=1
Išsaugoję jį uždarykite ir įveskite šią komandą
$ sysctl -p
Atlikę IP peradresavimą, turėsime atsisiųsti naujausią „OpenvPN“ versiją savo „Debian 10“ serveriui, kaip nurodyta šiose instrukcijose:
Pasikeiskite į root ir atsisiųskite paketą pasirašiusį GPG raktą
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -
Į failą
sources.list
įtraukite tinkamų „OpenVPN“ paketų URL.# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exit
Atsisiuntėme „OpenVPN 2.5“, nes „slaptažodžio paraginimas“ reikalauja bent „OpenVPN“ versijos 2.4.8, kad galėtumėte prisijungti.
Toliau atsisiunčiame „OpenVPN
$ sudo apt install openvpn
Jei norite patikrinti versiją, tai galima padaryti paskambinus
--version
ir išspausdinus toliau pateiktą informaciją:$ 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
Įdiegti „Easy-RSA#
Norėdami sukurti PKI, į serverio ir kliento kompiuterius atsisiųsime naujausią „Easy-RSA“ versiją. Norėdami gauti naujausią versiją, eikite į Releases puslapį oficialiame „EasyRSA GitHub“ projekte, nukopijuokite failo, pasibaigiančio .tgz
, atsisiuntimo nuorodą ir įklijuokite ją į šią komandą:
Atsisiųskite naujausią versiją
$ cd ~ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgz
Ištraukti tarball
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
PKI sukūrimas „OpenVPN“ serveriui#
Prieš kurdami OpenVPN serverio privatųjį raktą ir sertifikatą, savo OpenVPN serveryje turite sukurti vietinį viešojo rakto infrastruktūros katalogą. Šį katalogą naudosite serverio ir klientų sertifikatų užklausoms tvarkyti, užuot jas teikę tiesiogiai CA serveryje.
Norėdami „OpenVPN“ serveryje sukurti PKI katalogą, turėsite užpildyti failą, pavadintą vars
, kai kuriomis numatytosiomis reikšmėmis.
Sukurkite
vars
failą$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor vars
Atidarę failą įklijuokite šias dvi eilutes
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"
Tai vienintelės dvi eilutės, kurių reikia šiame
vars
faile OpenVPN serveryje, nes jis nebus naudojamas kaip sertifikato institucija. Jie užtikrins, kad jūsų privatieji raktai ir sertifikatų užklausos būtų sukonfigūruotos taip, kad raktams generuoti būtų naudojama elipsinės kreivės kriptografija (ECC), o jūsų klientams ir OpenVPN serveriui - saugūs parašai.Dėl kriptografinių algoritmų pasirinkimo vadovaujuosi šioje vadovėlyje pateiktu modeliu, o jūs galite juos pritaikyti pagal savo konkrečius poreikius.
PKI inicijavimas
Užpildę
vars
failą, galite tęsti PKI katalogo kūrimą. Norėdami tai padaryti, paleiskite easyrsa scenarijų su parinktimi init-pki:$ ./easyrsa init-pki
Inicializavę PKI „OpenVPN“ serveryje, galite pereiti prie kito veiksmo - sukurti „OpenVPN“ serverio sertifikato užklausą ir privatųjį raktą.
Sukurkite server.req
ir server.key
#
Dabar, kai „OpenVPN“ serveryje įdiegtos visos būtinosios sąlygos, kitas žingsnis - sugeneruoti raktų porą, sudarytą iš privataus rakto (kurį reikia laikyti paslaptyje) ir sertifikato pasirašymo prašymo (.csr
) „OpenVPN“ serveryje.
Apskritai sistemose, kuriose generuojame raktą ir užklausą, šie failai paliekami neužšifruoti naudojant nopass
argumentą, nes serverius paprastai reikia paleisti neįvedus slaptažodžio. Taip sukuriamas nešifruotas raktas, todėl nepamirškite atidžiai apsaugoti jo prieigos ir failų teisių.
Patarimas
„OpenVPN“ konfigūracijos pastabos:
Serveris ir kiekvienas klientas turi turėti savo cert ir rakto failą. Serveris ir visi klientai naudos tą patį CA failą.
Serverio sertifikatas turi turėti šiuos požymius:
keyUsage: digitalSignature, keyEncipherment
extendedKeyUsage: serverAuth
Sukurti serverio pasirašymo užklausą
Pereikite į
~/easyrsa
katalogą savo OpenVPN serveryje kaip ne šakninis naudotojas ir įveskite šias komandas:$ cd easyrsa/ $ ./easyrsa gen-req server nopass
Taip bus sukurtas serverio privatusis raktas ir sertifikato prašymo failas, pavadintas
server.req
.Kai turėsite pasirašytą sertifikatą, perduosite jį atgal į „OpenVPN“ serverį.
Nukopijuokite raktą į OpenVPN serverio katalogą
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/
Atlikę šiuos veiksmus sėkmingai sukūrėte „OpenVPN“ serverio privatų raktą. Taip pat sukūrėte „OpenVPN“ serverio sertifikato pasirašymo užklausą.
Patarimas
Sertifikatų pasirašymo užklausų failų plėtiniai
Failo plėtinys, kurį priima CA ir HSM vadovėlis, nurodo, kad reikia sukurti
</x id="92"></x>.csr
failą, tačiau „Easy-RSA“ sukuria sertifikatų pasirašymo prašymus su</x id="168"></x>
plėtiniu.Naudosime pakaitomis abu plėtinius, tačiau įsitikinsime, kad į sertifikatų tarnybą perduodame tinkamus failus, ir sukursime galutinį sertifikatą su
.crt
plėtiniu.
Kitame šio vadovo skyriuje pasirašysime .req
failą su mūsų CA, įdiegta HSM 2 įrenginyje. Šiam tikslui pasirašyti užklausas naudosiu specialų kompiuterį.
Pasirašykite ir gaukite server.crt
#
Pagal toliau pateiktus nurodymus į CA sistemą reikia perkelti server.req
(arba server.csr
) failą.
Pats perkėlimas nėra saugus, tačiau, jei transportas nepatikimas, pravartu patikrinti, ar gautas failas atitinka siuntėjo kopiją.
Atlikdamas šiuos veiksmus, plačiai remsiuosi šiomis instrukcijomis, kad galėčiau pasirašyti sertifikatų pasirašymo prašymus, kai juos sugeneruosime naudodami „Easy-RSA“.
Pasirašykite server.req
failą#
Vietiniame kompiuteryje, skirtame HSM pasiekti, naudosime Opensc 0.20 įrankius, kad pasirašytume .req
failą ir nusiųstume jį atgal į OpenVPN serverį. Darome prielaidą, kad failą iš serverio kompiuterio persiuntėme į CA kompiuterį.
Pirmiausia pradedame nuo HSM „Nitrokey“ prijungimo ir įveskite šią instrukciją, kad išvardytumėte turimus klavišus.
Užklausa apie turimų prietaisų sąrašą
$ p11tool --list-all
(Būtinas veiksmas) Jei sertifikatą su CA pasirašote pirmą kartą, galbūt norėsite iš HSM gauti CA privataus rakto URI ir įtraukti jį į konfigūracijos failą.
Raktas URI turėtų būti tokio formato:
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
Sukurti
openvpn/
katalogą pocertificate-authority/
.$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/
Pasirašykite
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
failo gavimas į serverio kompiuterį#
Pasirašytų sertifikatų perkėlimas į serverį
Iš CA kompiuterio nukopijuokite failus
server.crt
ir</x id="57"></x>
į „OpenVPN“ serverį. Šiame pavyzdyje naudosimescp
komandą, kaip nurodyta toliau:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmp
Įdėkite sertifikatus į serverio katalogą
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/server
Įspėjimas
CA sertifikatas ir
chain.crt
Pirmiau pateiktame pavyzdyje CA grąžina pasirašytą Šiaurės sertifikatą ir įtraukia CA sertifikatą
CA.crt
, kuris yrachain.crt
failas. Tai galima atlikti nesaugiu kanalu, tačiau klientui rekomenduojama patvirtinti, ar gautaschain.crt
galioja, jei transportas nepatikimas.Failą
chain.crt
galima pervadinti įCA.crt
tiksliniame kompiuteryje, tačiau kituose nurodymuose naudosimechain.crt
.
Sukonfigūruokite „OpenVPN“ serverį#
TLS naudojančiam ryšiui reikia kelių autentifikavimo sertifikatų ir raktų. Dabar, kai juos išdavėme ir pasirašėme, galime juos patalpinti į reikiamus katalogus. Sertifikatų ir raktų, kurie turi būti šakniniame kataloge, suskirstymas yra toks:
Šakninio sertifikato failas (CA.crt arba chain.crt mūsų konfigūracijoje)
Serverio sertifikatas
Serverio raktas
„Diffie Hellman“ parametrai (neprivaloma)
Dabar savo „OpenVPN“ serveryje galite sukurti konfigūracijos failą server.conf
naudodami mėgstamą teksto redaktorių. Failą galite konfigūruoti pagal savo poreikius, o mes pasirūpinsime, kad serverio sertifikato ir rakto dalys būtų pakeistos pagal jūsų pasirinktus jūsų pasirašytų failų pavadinimus:
# OpenVPN Server Certificate - CA, server key and certificate
ca chain.crt
cert server.crt
key server.key
Čia pateikiamas konfigūracijos failas, kurį galime naudoti šioms instrukcijoms išbandyti:
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
Norėdami patikrinti, ar konfigūracija veikia tinkamai, galime naudoti šią komandą:
$ sudo openvpn --server --config server.conf
Įjunkite „OpenVPN“ paslaugą serveryje#
Įjunkite „OpenVPN“ paslaugą, pridėdami ją į systemctl, ir paleiskite ją šiomis komandomis:
$ sudo systemctl -f enable openvpn@server
$ sudo systemctl start openvpn@server
Norėdami patikrinti, ar OpenVPN paslauga yra aktyvi, naudokite šią komandą:
$ sudo systemctl status openvpn@server
Šiuo metu turėtų veikti „OpenVPN“.
Kliento pusės konfigūracija#
Įdiekite „OpenVPN“ ir „Easy-RSA#
Įdiekite programinę įrangą
Galime tiesiogiai naudoti
dnf install
, kad įdiegtume OpenVPN 2.4.9 ir Easy-RSA 3.0.7$ sudo dnf install openvpn easy-rsa
Tada sukuriame ne šakninį katalogą, skirtą „Easy RSA“, pavadintą
Easy-RSA
.$ mkdir ~/easyrsa
Ir susiekite jį su ką tik įdiegtu „Easy RSA“ paketu
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
Sukurti PKI „OpenVPN“ klientui#
Tokiu pat būdu, kokiu sukūrėme PKI „OpenVPN“ serveryje, sukursime PKI naudodami „Easy-RSA“ kliento pusėje.
Sukurkite client.req
ir client.key
.#
Tokiu pat būdu, kaip ir išdavėme raktų porą serveriui, sugeneruosime raktų porą klientui, kurią sudarys client.reqclient.req
failas ir client.key
failas. Pastarasis turi būti slaptas kliento kompiuteryje.
Pasirašykite client.req
ir išduokite client.crt
failą#
Norėdami perkelti client.req
failą į CA kompiuterį, naudosime tą patį metodą, kaip ir </x id="103"></x>
failo atveju.
Perdavus sertifikatą, CA kompiuteryje pasirašome sertifikato pasirašymo prašymo failą naudodami šią komandą
$ 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
Importas client.crt
į „Nitrokey“ iš CA kompiuterio#
Sukūrę client.crt
failą, prijungiame „Nitrokey Pro 2“ įrenginį prie CA kompiuterio ir importuojame .crt
į „Pro 2“ įrenginį naudodami šią komandą:
$ pkcs15-init --store-certificate client.crt --id 3
Naudodami šią komandą galite patikrinti, ar raktas veiksmingai saugomas „Nitrokey“, naudodami šią komandą:
$ pkcs15-tool -c
Arba
$ pkcs11-tool --list-objects
Daugiau komandų galite rasti OpenSC wiki.
chain.crt
failo gavimas iš CA kompiuterio#
O client.crt`
stored on the nitrokey Pro 2 device, we must retrieve the chain.crt
failą laikome kliento kompiuteryje ir saugome atitinkamame kataloge. Galime naudoti scp
, kaip ir šio vadovo serverio skyriuje paaiškintame metode.
Sukonfigūruokite klientą sąveikai su „Nitrokey#
Dabar vėl kliento kompiuteryje prijunkite „Nitrokey Pro“ ir naudokite jį VPN ryšiui su serveriu užmegzti. Apskritai TLS naudojančiam ryšiui reikia kelių sertifikatų ir raktų autentiškumui patvirtinti:
Šakninio sertifikato failas (chain.crt)
Kliento sertifikatas
Kliento raktas
Šiame vadove galime naudoti šį client.conf
failą ir į jį atitinkamai pridėti reikiamas parinktis:
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
Nustatykite tinkamą objektą
Kiekvienas PKCS#11 teikėjas gali palaikyti kelis įrenginius. Norėdami peržiūrėti galimų objektų sąrašą, galite naudoti šią komandą:
$ 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
Kiekviena sertifikato ir privataus rakto pora turi unikalią
Serialized id
eilutę. Konfigūracijos faile reikia nurodyti prašomo sertifikato serijinę id eilutę. Tai galime padaryti pridėdamipkcs11-id
parinktį, naudodami viengubus kabliataškius.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'
Įtraukti gautą serijinį ID į konfigūracijos failą
Naudodamiesi mėgstamu teksto redaktoriumi atidarykite server.conf failą ir pridėkite toliau nurodytas eilutes, tačiau nepamirškite įterpti savo
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'
Norėdami atlikti papildomus nustatymus, susijusius su OpenVPN autentifikavimu, taip pat galite pridėti kelias eilutes, skirtas raktų tvarkymui, nors tai neprivaloma.
Pastaba
Spustelėkite, jei norite peržiūrėti kodą
# 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
Neprivalomas žingsnis
Jei reikia išbandyti konfigūraciją su „Nitrokey“ ženklu ir be jo, galite pridėti eilučių į tą pačią
client.conf
ir komentuoti/nekomentuoti atitinkamas eilutes pagal savo poreikius:Pastaba
Spustelėkite, jei norite peržiūrėti kodą
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1
Sukonfigūruokite „OpenVPN“ klientą
Galutinis konfigūracijos failas
client.conf
turėtų atrodyti taip: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
Žinomos problemos
Yra keletas žinomų problemų, susijusių su „OpenVPN“ prisijungimu prie „OpenSC“. Prašome susipažinti su šiomis problemomis čia.
Paleiskite „OpenVPN“ klientą#
Įjunkite „OpenVPN“ paslaugą kliento kompiuteryje
Įjunkite „OpenVPN“ paslaugą ir paleiskite ją šiomis komandomis:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.service
Norėdami dar kartą patikrinti, ar „OpenVPN“ paslauga yra aktyvi, naudokite šią komandą:
$ sudo systemctl status openvpn-server@server.service
Įveskite naudotojo PIN kodą
Vykdant „OpenVPN“ klientą reikia įvesti „Nitrokey“ 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: ******
Įspėjimas
Deja, atrodo, kad „OpenVPN“ nepavyksta užmegzti rankų suvedimo ir sustoja ties klaida, apie kurią pranešama kur, kur ir kur
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)
Kai kuriais atvejais terminale neprašoma įvesti PIN kodo. Viena iš apeičių būtų naudoti šią komandą prisijungimui su PIN kodu:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>
Arba galite perkompiluoti OpenVPN klientą su išjungtu „systemd“ palaikymu, ir jis, kaip ir tikėtasi, paprašys nurodyti PIN kodą.
Kitas variantas - prisijungti prie „OpenVPN“ instancijos naudojant „Viscosity“ klientą, kuris užtikrina geresnę naudotojo patirtį, ypač įvedant PIN kodą.