OpenVPN konfigurācija ar Easy-RSA¶
`Nitrokey U2F <x id=“14“></x><x id=“66“></x> |
|||||||
---|---|---|---|---|---|---|---|
✓ |
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
Piezīme
Šī rokasgrāmata ir darba procesā, un tā tiks atjaunināta atbilstoši. Lūdzu, ņemiet vērā šo statusu.
Šajā rokasgrāmatā ir parādīts, kā konfigurēt OpenVPN klientus, lai pieteiktos, izmantojot Nitrokey Pro 2 vai Nitrokey Storage 2. Programmatūras atslēgu pārvaldībai mēs izmantosim Easy-RSA, utilītu, kas attīstījās līdztekus 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).
Mēs izmantosim Easy-RSA, jo šķiet, ka tas nodrošina zināmu elastību un ļauj pārvaldīt atslēgas, izmantojot ārējos PKI. Mēs to izmantosim serverī, lai izdotu parakstīšanas pieprasījumu, un atkārtosim to pašu procesu klientam. Sertifikātu parakstīšanas pieprasījumus parakstīs CA uz Nitorkey HSM un atkārtoti nosūtīs serverim un klientam.
Priekšnosacījumi¶
Šajā dokumentācijā mums būs nepieciešamas 3 dažādas mašīnas:
OpenVPN serveris (v. 2.5) uz Debian 10 (EC2 virtuālā mašīna - AWS)
OpenVPN klients (v. 2.4.9) Fedora 30 (vietējā datorā)
Sertifikātu iestāde būs pieejama no atsevišķas mašīnas ar Fedora 30 (vietējā mašīna).
Lai mijiedarbotos ar ierīcēm, mums būs nepieciešams OpenSC 0.20, kas instalēts klienta un CA ierīcē (vietējās iekārtās). Varat sekot norādījumiem, lai to iestatītu, kas sniegti šajā saitē (*Unix).
Lai lejupielādētu atkarības Fedora mašīnām, mēs varam šo instrukciju:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
Debian Linux operētājsistēmai jaunākās OpenSC paketes ir pieejamas šeit.
Fiziskās atslēgas pārvaldībai mēs izmantosim šādus Nitrokeys:
Autentifikācijas atslēga, izmantojot Nitrokey Pro 2 (pdf).
Sertifikātu iestāde (CA), kas izmanto Nitrokey HSM 2 (pdf).
Atgādinām, ka, lai izveidotu Nitrokey HSM 2 sertifikātu iestādi, varat sekot instrukcijām, kas pieejamas ` dokumentācijā <certificate-authority.html#sign-a-server-certificate>`_.
Varat arī iestatīt savu CA atsevišķā datorā vai izmantot OpenVPN pamācību, kas arī balstās uz Easy-RSA. Pēdējās 2 iespējas paļaujas uz programmatūras risinājumiem atslēgu pārvaldībai.
Servera puse¶
1. Instalējiet OpenVPN¶
Vispirms ir jāiedarbina IP pārsūtīšana, rediģējot
/etc/sysctl.conf
failu.$ editor /etc/sysctl.confAtceliet komentāru vai attiecīgi rediģējiet šādu rindu
net.ipv4.ip_forward=1Pēc saglabāšanas aizveriet un ievadiet šo komandu
$ sysctl -pKad IP pārsūtīšana ir pabeigta, mums būs nepieciešams lejupielādēt jaunāko OpenvPN versiju mūsu Debian 10 serverim saskaņā ar šīm instrukcijām:
Mainiet root un lejupielādējiet GPG atslēgu, kas parakstīja paketi.
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -Pievienojiet atbilstošo OpenVPN pakotņu URL
sources.list
failā.# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exitLejupielādējām OpenVPN 2.5, jo „paroles uzvednē“ ir nepieciešama vismaz OpenVPN versija 2.4.8, lai pieteiktos.
Tālāk mēs lejupielādējam OpenVPN
$ sudo apt install openvpnJa vēlaties pārbaudīt versiju, to var izdarīt, izsaucot
--version
un izdrukājot:$ 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. Instalējiet Easy-RSA¶
Lai izveidotu PKI, mēs lejupielādēsim jaunāko Easy-RSA versiju servera un klienta datoros. Lai iegūtu jaunāko versiju, dodieties uz Releases lapu oficiālajā EasyRSA GitHub projektā, nokopējiet lejupielādes saiti uz failu, kas beidzas ar
.tgz
, un tad ielīmējiet to nākamajā komandā:
Lejupielādēt jaunāko versiju
$ cd ~ $ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgzIzraksts tarball
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. PKI izveide OpenVPN serverim¶
Pirms varat izveidot OpenVPN servera privāto atslēgu un sertifikātu, OpenVPN serverī ir jāizveido vietējais publiskās atslēgas infrastruktūras direktorijs. Šo direktoriju jūs izmantosiet, lai pārvaldītu servera un klientu sertifikātu pieprasījumus, nevis tieši CA serverī.
Lai OpenVPN serverī izveidotu PKI direktoriju, ir jāaizpilda fails ar nosaukumu
vars
ar noklusējuma vērtībām.
Izveidot
vars
failu$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor varsKad fails ir atvērts, ielīmējiet šādas divas rindas
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"Šīs ir vienīgās divas rindiņas, kas jums nepieciešamas šajā
vars
failā OpenVPN serverī, jo tas netiks izmantots kā sertifikātu iestāde. Tie nodrošinās, ka jūsu privātās atslēgas un sertifikātu pieprasījumi ir konfigurēti tā, lai izmantotu elipses līknes kriptogrāfiju (ECC) atslēgu ģenerēšanai un drošus parakstus jūsu klientiem un OpenVPN serverim.Attiecībā uz kriptogrāfisko algoritmu izvēli es ievēroju modeli, kas aprakstīts šajā pamācībā, un jūs varat tos pielāgot atbilstoši savām vajadzībām.
PKI inicializēšana
Kad esat aizpildījis
vars
failu, varat turpināt PKI direktorija izveidi. Lai to izdarītu, palaidiet easyrsa skriptu ar opciju init-pki:$ ./easyrsa init-pkiPēc tam, kad OpenVPN serverī esat inicializējis savu PKI, varat pāriet pie nākamā soļa, proti, OpenVPN servera sertifikāta pieprasījuma un privātās atslēgas izveides.
4. Izveidojiet server.req
un server.key
.¶
Tagad, kad OpenVPN serverī ir instalēti visi priekšnoteikumi, nākamais solis ir OpenVPN serverī ģenerēt atslēgu pāri, kas sastāv no privātās atslēgas (lai saglabātu slepenību) un sertifikāta parakstīšanas pieprasījuma (
.csr
).Vispārīgi runājot, sistēmās, kurās mēs ģenerējam atslēgu un pieprasījumu, šie faili netiek šifrēti, izmantojot
nopass
argumentu, jo serverus parasti nepieciešams palaist bez paroles ievadīšanas. Tādējādi tiek ģenerēta nešifrēta atslēga, tāpēc uzmanīgi aizsargājiet tās piekļuvi un failu atļaujas.Padoms
OpenVPN konfigurācijas piezīmes:
- The server, and each client, must have their own cert and key
file. The server and all clients will use the same CA file.
Servera sertifikātam ir jābūt šādam:
keyUsage: digitalSignature, keyEncipherment`
extendedKeyUsage: serverAuth`
Servera parakstīšanas pieprasījuma izveide
Pārejiet uz
~/easyrsa
direktoriju savā OpenVPN serverī kā lietotājs, kas nav root lietotājs, un ievadiet šādas komandas:$ cd easyrsa/ $ ./easyrsa gen-req server nopassTādējādi tiks izveidota servera privātā atslēga un sertifikāta pieprasījuma fails ar nosaukumu
server.req
.Kad sertifikāts ir parakstīts, pārsūtiet to atpakaļ uz OpenVPN serveri.
Atslēgas kopēšana OpenVPN servera direktorijā
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/Pēc šo darbību veikšanas esat veiksmīgi izveidojis OpenVPN servera privāto atslēgu. Jūs arī esat izveidojis OpenVPN servera sertifikāta parakstīšanas pieprasījumu.
Padoms
Sertifikātu parakstīšanas pieprasījumu failu paplašinājumi
Faila paplašinājums, ko pieņem CA un HSM apmācība, norāda uz
.csr
faila izveidi, taču Easy-RSA izveido sertifikātu parakstīšanas pieprasījumus ar</x id="168"></x>
paplašinājumu.Abus paplašinājumus izmantosim pārmaiņus, vienlaikus pārliecinoties, ka mēs pārsūtām pareizos failus sertifikātu iestādei, un izveidosim galīgo sertifikātu ar
.crt
paplašinājumu.Nākamajā šīs rokasgrāmatas sadaļā mēs parakstīsim
.req
failu ar mūsu CA, kas izvietota HSM 2 ierīcē. Šim nolūkam pieprasījumiem parakstīt izmantošu īpašu ierīci.
5. Parakstīt un saņemt server.crt`
¶
Saskaņā ar turpmāk minētajiem norādījumiem
server.req
(vai</x>`server.csr
) fails jāpārsūta uz CA sistēmu.Pats pārsūtīšanas process nav saistīts ar drošību, tomēr ir lietderīgi pārbaudīt, vai saņemtais fails atbilst sūtītāja kopijai, ja transportēšana nav uzticama.
Lai veiktu šos soļus, es lielā mērā balstīšos uz šīm instrukcijām, lai parakstītu sertifikātu parakstīšanas pieprasījumus, tiklīdz mēs tos izveidojām ar Easy-RSA.
Parakstiet
server.req
failuLai parakstītu
.req
failu un nosūtītu to atpakaļ uz OpenVPN serveri, mēs izmantosim Opensc 0.20 nodrošinātos rīkus, lai piekļūtu HSM. Mēs pieņemam, ka esam pārsūtījuši failu no servera mašīnas uz CA mašīnu.Vispirms mēs sākam, pievienojot HSM Nitrokey, un ievadiet šo instrukciju, lai uzskaitītu pieejamos taustiņus.
Pieejamo ierīču saraksta pieprasīšana
$ p11tool --list-all(Obligāts solis) Ja sertifikātu ar CA parakstat pirmo reizi, iespējams, vēlēsieties iegūt CA privātās atslēgas URI no HSM un iekļaut to konfigurācijas failā.
Piezīme
Atslēgas URI jābūt šādā formātā:
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=privateIzveidot
openvpn/
direktoriju zemcertificate-authority/
.$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/Parakstiet
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
faila atgūšana servera datorā
Parakstīto sertifikātu pārsūtīšana uz serveri
No CA datora nokopējiet failus
server.crt
un</x>`chain.crt
uz OpenVPN serveri. Šajā piemērā mēs izmantosimscp
komandu šādi:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmpSertifikātu ievietošana servera direktorijā
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/serverBrīdinājums
CA sertifikāts un
chain.crt
.Iepriekš minētajā gadījumā CA atgriež parakstītu sever sertifikātu un iekļauj CA sertifikātu
CA.crt
, kas irchain.crt
fails. To var izdarīt, izmantojot nedrošu kanālu, tomēr klientam ieteicams apstiprināt, vai saņemtais<x id="239"></x id="239"></x>
ir derīgs, ja transports nav uzticams.Ir iespējams pārdēvēt failu
chain.crt
failu uz</x>`CA.crt
mērķa datorā, tomēr nākamajos norādījumos mēs izmantosimchain.crt
.
6. OpenVPN servera konfigurēšana¶
Savienojumam, kas izmanto TLS, autentifikācijai ir nepieciešami vairāki sertifikāti un atslēgas. Tagad, kad esam tos izdevuši un parakstījuši, varam tos ievietot pareizajos direktorijos. Sertifikātu un atslēgu sadalījums, kam jāatrodas saknes direktorijā, ir šāds:
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)Tagad OpenVPN serverī varat izveidot konfigurācijas failu
server.conf
, izmantojot savu iecienītāko teksta redaktoru. Failu var konfigurēt atbilstoši jūsu vajadzībām, savukārt mēs pārliecināsimies, ka servera sertifikāta un atslēgas sadaļas ir jāmaina atbilstoši jūsu izvēlētajiem nosaukumiem jūsu parakstītajiem failiem:# OpenVPN Server Certificate - CA, server key and certificate ca chain.crt cert server.crt key server.keyŠeit ir konfigurācijas fails, ko varam izmantot šo norādījumu testēšanai:
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 versionLai pārbaudītu, vai konfigurācija darbojas pareizi, varam izmantot šo komandu:
$ sudo openvpn --server --config server.conf
7. Palaidiet OpenVPN pakalpojumu serverī¶
Aktivizējiet OpenVPN pakalpojumu, pievienojot to systemctl, un palaidiet to, izmantojot šīs komandas:
$ sudo systemctl -f enable openvpn@server $ sudo systemctl start openvpn@serverLai divreiz pārbaudītu, vai OpenVPN pakalpojums ir aktīvs, izmantojiet šo komandu:
$ sudo systemctl status openvpn@serverŠajā brīdī OpenVPN ir jābūt darbojošam.
Klienta puses konfigurācija¶
1. OpenVPN un Easy-RSA instalēšana¶
Instalējiet programmatūru
Mēs varam tieši izmantot
dnf install
, lai instalētu OpenVPN 2.4.9 un Easy-RSA 3.0.7.$ sudo dnf install openvpn easy-rsaPēc tam kā ne-root izveidojam direktoriju Easy RSA ar nosaukumu
Easy-RSA
.$ mkdir ~/easyrsaUn izveidojiet saiti ar tikko instalēto pakotni Easy RSA.
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. Izveidojiet OpenVPN klienta PKI¶
Tādā pašā veidā, kādā mēs izveidojām PKI OpenVPN serverī, mēs izveidosim PKI, izmantojot Easy-RSA klienta pusē.
3. Izveidojiet client.req
un client.key
.¶
Tādā pašā veidā, kādā mēs izsniedzām atslēgu pāri serverī, mēs ģenerējam atslēgu pāri klientam, kas sastāv no
</x id="126"></x>
faila unclient.key
faila. Pēdējais no šiem failiem klienta datorā ir jāglabā slepenībā.
4. Parakstiet client.req
un izdodiet client.crt
failu.¶
Lai pārsūtītu
client.req
failu uz CA datoru, izmantosim to pašu metodi, ko izmantojām ``</x id=“103“></x id=“113“></x>` faila gadījumā.Pēc pārsūtīšanas CA datorā mēs parakstām sertifikāta parakstīšanas pieprasījuma failu, izmantojot šo komandu.
$ 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. Importēt client.crt
uz Nitrokey no CA iekārtas.¶
Pēc
client.crt
faila izveides pievienojam Nitrokey Pro 2 ierīci CA datorā un importējam</x>`.crt
failu Pro 2 ierīcē, izmantojot šo komandu:$ pkcs15-init --store-certificate client.crt --id 3Izmantojot šo komandu, varat pārbaudīt, vai atslēga ir efektīvi saglabāta Nitrokey, izmantojot šo komandu:
$ pkcs15-tool -cVai arī
$ pkcs11-tool --list-objectsVairāk komandu var atrast OpenSC wiki.
6. chain.crt
faila atgūšana no CA iekārtas.¶
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. Konfigurējiet klientu mijiedarbībai ar Nitrokey¶
Tagad, atgriežoties klienta datorā, mēs pievienosim Nitrokey Pro un izmantosim to, lai izveidotu VPN savienojumu ar serveri. Vispārīgi runājot, savienojumam, kas izmanto TLS, autentifikācijai ir nepieciešami vairāki sertifikāti un atslēgas:
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyŠajā rokasgrāmatā mēs varam izmantot šādu
client.conf
failu un attiecīgi pievienot tam nepieciešamās opcijas: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
Noteikt pareizo objektu
Katrs PKCS#11 nodrošinātājs var atbalstīt vairākas ierīces. Lai apskatītu pieejamo objektu sarakstu, varat izmantot šādu komandu:
$ 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=%03Katram sertifikāta/privātā atslēgas pārim ir unikāla
Serialized id
virkne. Konfigurācijas failā jānorāda pieprasītā sertifikāta serializētā id virkne. To varam izdarīt, pievienojotpkcs11-id
opciju, izmantojot vienpēdiņas.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'Iegūtā serializētā ID pievienošana konfigurācijas datnei
Izmantojot savu iecienītāko teksta redaktoru, atveriet server.conf failu un pievienojiet tam šādas rindiņas, vienlaikus rūpējoties par to, lai tiktu ievietotas savas
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'Papildu iestatījumiem, kas saistīti ar OpenVPN autentifikāciju, varat pievienot arī dažas rindas, lai apstrādātu atslēgu pārvaldību, lai gan tas nav obligāti.
Piezīme
Noklikšķiniet, lai apskatītu kodu
# 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 PINFakultatīvs solis
Ja nepieciešams pārbaudīt konfigurāciju ar un bez Nitrokey marķiera, varat pievienot rindas tajā pašā
client.conf
un komentēt/nekomentēt attiecīgās rindas atbilstoši savām vajadzībām:Piezīme
Noklikšķiniet, lai apskatītu kodu
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1OpenVPN klienta konfigurēšana
Galīgajam konfigurācijas failam
client.conf
jāizskatās šādi: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)
Lai izveidotu rokas satricinājumu, ir jākonfigurē OpenVPN iekļautais OpenSSL.
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
Ar šo modifikāciju jums nebūs kļūdas, kā ziņots šeit, šeit un šeit.
Zināmās problēmas
Ir zināmas dažas problēmas, kas saistītas ar OpenVPN pieteikšanos ar OpenSC. Lūdzu, iepazīstieties ar šiem jautājumiem šeit.
8. OpenVPN klienta palaišana¶
OpenVPN pakalpojuma palaišana klientā
Aktivizējiet OpenVPN pakalpojumu un palaidiet to, izmantojot šīs komandas:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.serviceLai vēlreiz pārbaudītu, vai OpenVPN pakalpojums ir aktīvs, izmantojiet šo komandu:
$ sudo systemctl status openvpn-server@server.serviceIevadiet savu lietotāja PIN kodu
Izpildot OpenVPN klientu, ir jāievada Nitrokey PIN kods:
$ 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: ******Brīdinājums
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)Dažos ziņotajos gadījumos terminālī netiek pieprasīts ievadīt PIN kodu. Viens no risinājumiem būtu izmantot šo komandu, lai pieteiktos ar PIN kodu:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>Alternatīvi varat pārkompilēt OpenVPN klientu ar atspējotu systemd atbalstu, un tas pieprasīs PIN kodu, kā paredzēts.
Vēl viena iespēja būtu pieteikties OpenVPN instancei, izmantojot Viscosity klientu, kas nodrošina labāku lietotāja pieredzi, jo īpaši attiecībā uz PIN ievadīšanu.