„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.
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).
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#
1. Įdiekite OpenVPN#
Pirmiausia reikia įjungti IP persiuntimą redaguojant
/etc/sysctl.conf
failą.$ editor /etc/sysctl.confPanaikinkite arba atitinkamai redaguokite šią eilutę
net.ipv4.ip_forward=1Išsaugoję jį uždarykite ir įveskite šią komandą
$ sysctl -pAtlikę 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 # exitAtsisiuntė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 openvpnJei 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
2. Įdiekite „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.tgzIštraukti tarball
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. Sukurti PKI 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 varsAtidarę 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-pkiInicializavę PKI „OpenVPN“ serveryje, galite pereiti prie kito veiksmo - sukurti „OpenVPN“ serverio sertifikato užklausą ir privatųjį raktą.
4. 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:
- The server, and each client, must have their own cert and key
file. The server and all clients will use the same CA file.
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 nopassTaip 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į.
5. Pasirašyti ir gauti server.crt
#
Pagal toliau pateiktus nurodymus į CA sistemą reikia perkelti
server.req
(arbaserver.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ą.
Pastaba
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=privateSukurti
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
.
6. 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:
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)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 versionNorėdami patikrinti, ar konfigūracija veikia tinkamai, galime naudoti šią komandą:
$ sudo openvpn --server --config server.conf
7. Į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@serverNorė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#
1. Į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-rsaTada sukuriame ne šakninį katalogą, skirtą „Easy RSA“, pavadintą
Easy-RSA
.$ mkdir ~/easyrsaIr susiekite jį su ką tik įdiegtu „Easy RSA“ paketu
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. Sukurti PKI OpenVPN klientui#
Tokiu pat būdu, kokiu sukūrėme PKI „OpenVPN“ serveryje, sukursime PKI naudodami „Easy-RSA“ kliento pusėje.
3. 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 irclient.key
failas. Pastarasis turi būti slaptas kliento kompiuteryje.
4. 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
5. Importuokite client.crt
į „Nitrokey“ iš CA mašinos.#
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 3Naudodami šią komandą galite patikrinti, ar raktas veiksmingai saugomas „Nitrokey“, naudodami šią komandą:
$ pkcs15-tool -cArba
$ pkcs11-tool --list-objectsDaugiau komandų galite rasti OpenSC wiki.
6. Atgaukite chain.crt
failą iš CA kompiuterio.#
O
client.crt`
stored on the nitrokey Pro 2 device, we must retrieve thechain.crt
failą laikome kliento kompiuteryje ir saugome atitinkamame kataloge. Galime naudotiscp
, kaip ir šio vadovo serverio skyriuje paaiškintame metode.
7. 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:
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyŠ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=%03Kiekviena 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 PINNeprivalomas ž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 1Sukonfigū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 1Configure OpenVPN (Windows only)
Kad būtų galima užmegzti rankų suvedimą, turite sukonfigūruoti „OpenVPN“ įtrauktą „OpenSSL“.
Sukurkite katalogą
ssl
C:\Program Files\OpenVPN
ir sukurkite failąopenssl.cnf
su tokiu turiniu :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
Atlikus šį pakeitimą, neliks klaidų, apie kurias pranešta čia, čia ir čia.
Žinomos problemos
Yra keletas žinomų problemų, susijusių su „OpenVPN“ prisijungimu prie „OpenSC“. Prašome susipažinti su šiomis problemomis čia.
8. 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.serviceNorė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
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)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ą.