OpenVPN-konfigurointi Easy-RSA:n avulla#
✓ |
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
Muista
Tämä opas on keskeneräinen, ja sitä päivitetään säännöllisesti. Ota tämä tila huomioon.
Tässä oppaassa näytetään, miten OpenVPN-asiakkaat määritetään kirjautumaan sisään Nitrokey Pro 2 tai Nitrokey Storage 2 avulla. Ohjelmistoavainten hallintaan käytämme Easy-RSA -apuohjelmaa, joka on kehittynyt OpenVPN:n rinnalla.
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).
Käytämme Easy-RSA:ta, koska se näyttää tarjoavan jonkin verran joustavuutta ja mahdollistaa avainten hallinnan ulkoisten PKI:iden kautta. Käytämme sitä palvelimella allekirjoituspyynnön tekemiseen ja toistamme saman prosessin asiakkaalla. Varmenteen allekirjoituspyynnöt allekirjoittaa Nitorkey HSM:ssä oleva varmentaja, ja ne lähetetään uudelleen palvelimelle ja asiakkaalle.
Edellytykset#
Seuraavassa dokumentaatiossa tarvitsemme 3 eri konetta seuraavasti:
OpenVPN-palvelin (v. 2.5) Debian 10:llä (EC2-virtuaalikone - AWS).
OpenVPN-asiakasohjelma (v. 2.4.9) Fedora 30:ssä (paikallinen kone).
Varmenteiden myöntäjään pääsee käsiksi Fedora 30:llä varustetusta erillisestä koneesta (paikallinen kone).
Jotta voimme olla vuorovaikutuksessa laitteiden kanssa, tarvitsemme OpenSC 0.20 asennettuna asiakas- ja CA-koneeseen (paikalliset koneet). Voit seurata ohjeita sen asentamiseksi tämän linkin (*Unix) kautta.
Voit ladata riippuvuudet Fedora-koneisiin voimme tämän ohjeen:
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
Debian Linuxille uudemmat OpenSC-paketit ovat saatavilla täältä.
Käytämme fyysisten avainten hallintaan seuraavia Nitrokeys-menetelmiä:
Todennusavain, jossa käytetään `Nitrokey Pro 2 (pdf) <https://www.nitrokey.com/files/doc/Nitrokey_Pro_factsheet.pdf>`___.
Varmentaja (CA), joka käyttää `Nitrokey HSM 2 (pdf) <https://www.nitrokey.com/files/doc/Nitrokey_HSM_factsheet.pdf>`____
Muistutuksena, että voit rakentaa varmenteiden myöntäjän Nitrokey HSM 2:een noudattamalla dokumentaatiossa olevia ohjeita.
Vaihtoehtoisesti voit perustaa oman CA:n erilliselle koneelle tai käyttää OpenVPN-opasohjelmaa, joka perustuu myös Easy-RSA. Kaksi viimeistä vaihtoehtoa luottavat ohjelmistoratkaisuihin avainten hallinnassa.
Palvelimen puolella#
1. Asenna OpenVPN#
Ensin meidän on otettava IP-toimintojen välitys käyttöön muokkaamalla
/etc/sysctl.conf
-tiedostoa.$ editor /etc/sysctl.confPoista kommentti tai muokkaa vastaavasti seuraavaa riviä
net.ipv4.ip_forward=1Sulje se tallennuksen jälkeen ja anna tämä komento
$ sysctl -pKun IP:n välitys on tehty, meidän on ladattava OpenvPN:n uusin versio Debian 10 -palvelimellemme ` näiden ohjeiden <https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos>`__ mukaisesti:
Vaihda pääkäyttäjäksi ja lataa GPG-avain, jolla paketti on allekirjoitettu.
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -Lisää asianmukaisten OpenVPN-pakettien URL-osoitteet tiedostoon
sources.list
.# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exitLatasimme OpenVPN 2.5:n, koska ”salasanakysely” vaatii vähintään OpenVPN version 2.4.8 kirjautumista varten.
Seuraavaksi lataamme OpenVPN:n
$ sudo apt install openvpnJos haluat tarkistaa version, se on mahdollista kutsumalla
--version
ja tulostamalla seuraavat:$ 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. Asenna Easy-RSA#
PKI:n rakentamiseksi lataamme Easy-RSA:n uusimman version palvelin- ja asiakaskoneisiin. Uusimman version hankkimiseksi siirry virallisen EasyRSA GitHub -projektin Releases-sivulle, kopioi latauslinkki tiedostoon, jonka pääte on
.tgz
, ja liitä se seuraavaan komentoon:
Lataa uusin versio
$ cd ~ $ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgzPura tarrapallo
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3. Luo PKI OpenVPN-palvelimelle#
Ennen kuin voit luoda OpenVPN-palvelimen yksityisen avaimen ja varmenteen, sinun on luotava paikallinen Public Key Infrastructure -hakemisto OpenVPN-palvelimelle. Käytät tätä hakemistoa palvelimen ja asiakkaiden varmennepyyntöjen hallintaan sen sijaan, että tekisit ne suoraan CA-palvelimelle.
Jotta voit rakentaa PKI-hakemiston OpenVPN-palvelimellesi, sinun on täytettävä tiedosto nimeltä
vars
joillakin oletusarvoilla.
Luo tiedosto
vars
.$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor varsKun tiedosto on avattu, liitä seuraavat kaksi riviä tiedostoon
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"Nämä ovat ainoat kaksi riviä, joita tarvitset tässä
vars
-tiedostossa OpenVPN-palvelimellasi, koska sitä ei käytetä varmenteiden myöntäjänä. Ne varmistavat, että yksityiset avaimesi ja varmennepyyntösi on konfiguroitu käyttämään Elliptic Curve Cryptography (ECC) -tekniikkaa avainten ja turvallisten allekirjoitusten luomiseen asiakkaillesi ja OpenVPN-palvelimelle.Mitä tulee kryptografisten algoritmien valintaan, noudatan tämän oppikirjan mallia, ja voit muokata niitä omien tarpeidesi mukaan.
PKI:n alustaminen
Kun olet täyttänyt tiedoston
vars
, voit jatkaa PKI-hakemiston luomista. Suorita easyrsa-skripti init-pki-optiolla:$ ./easyrsa init-pkiKun olet alustanut PKI:n OpenVPN-palvelimella, voit siirtyä seuraavaan vaiheeseen eli OpenVPN-palvelimen varmennepyynnön ja yksityisen avaimen luomiseen.
4. Luo server.req
ja server.key
.#
Nyt kun OpenVPN-palvelimellesi on asennettu kaikki ennakkoedellytykset, seuraava vaihe on luoda avainpari, joka koostuu yksityisestä avaimesta (joka on pidettävä salassa) ja Certificate Signing Request (
.csr
) OpenVPN-palvelimellesi.Yleisesti ottaen järjestelmissä, joissa luodaan avain ja pyyntö, nämä tiedostot jätetään salaamattomiksi käyttämällä
nopass
-argumenttia, koska palvelimet on yleensä käynnistettävä ilman salasanan syöttöä. Tämä tuottaa salakirjoittamattoman avaimen, joten muista suojata sen käyttö- ja tiedosto-oikeudet huolellisesti.Vihje
OpenVPN:n konfigurointiohjeita:
- The server, and each client, must have their own cert and key
file. The server and all clients will use the same CA file.
Palvelinvarmenteessa on oltava seuraavat ominaisuudet:
keyUsage: digitalSignature, keyEncipherment`
``extendedKeyUsage: serverAuth``extendedKeyUsage: serverAuthextendedKeyUsage: serverAuth`
Luo palvelimen allekirjoituspyyntö
Siirry OpenVPN-palvelimen
~/easyrsa
-hakemistoon ei-root-käyttäjänä ja kirjoita seuraavat komennot:$ cd easyrsa/ $ ./easyrsa gen-req server nopassTämä luo palvelimelle yksityisen avaimen ja varmennepyyntötiedoston nimeltä
server.req
.Kun sinulla on allekirjoitettu varmenne, siirrät sen takaisin OpenVPN-palvelimelle.
Kopioi avain OpenVPN-palvelimen hakemistoon.
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/Kun olet suorittanut nämä vaiheet, olet onnistuneesti luonut yksityisen avaimen OpenVPN-palvelimelle. Olet myös luonut OpenVPN-palvelimen varmenteen allekirjoituspyynnön.
Vihje
Varmenteen allekirjoituspyyntöjen tiedostopäätteet
CA:n ja HSM:n opetusohjelmassa käytetty tiedostopääte viittaa
.csr
-tiedoston luomiseen, mutta Easy-RSA luo varmenteen allekirjoituspyynnöt, joiden tiedostopääte on.req
.Käytämme molempia laajennuksia vaihdellen ja varmistamme samalla, että siirretään oikeat tiedostot varmennepalveluun, ja luomme lopullisen varmenteen, jolla on
.crt
-laajennus.Tämän oppaan seuraavassa osassa allekirjoitamme
.req
-tiedoston HSM 2 -laitteeseen asennetun CA:n kanssa. Tätä tarkoitusta varten käytän erillistä konetta pyyntöjen allekirjoittamiseen.
5. Allekirjoitus ja haku server.crt`
#
Seuraavat ohjeet edellyttävät
server.req
(taiserver.csr
) tiedoston siirtämistä CA-järjestelmään.Siirto itsessään ei ole tietoturva-altis, mutta on viisasta tarkistaa, että vastaanotettu tiedosto vastaa lähettäjän kopiota, jos siirto on epäluotettava.
Näiden vaiheiden läpikäymisessä luotan laajalti näihin ohjeisiin allekirjoittaakseni varmenteen allekirjoituspyynnöt, kun olemme luoneet ne Easy-RSA:lla.
Allekirjoita
server.req
tiedostoHSM:n käyttöön tarkoitetulla paikallisella koneella käytämme Opensc 0.20:n tarjoamia työkaluja allekirjoittaaksemme
.req
-tiedoston ja lähetämme sen takaisin OpenVPN-palvelimelle. Oletamme, että olemme siirtäneet tiedoston palvelinkoneelta CA-koneelle.Aloitamme ensin liittämällä HSM Nitrokey -avaimen ja syöttämällä tämän ohjeen käytettävissä olevien avainten luetteloimiseksi.
Kysy käytettävissä olevien laitteiden luetteloa
$ p11tool --list-all(Vaadittu vaihe) Jos allekirjoitat varmenteen ensimmäistä kertaa varmentajan kanssa, saatat haluta hakea varmentajan yksityisen avaimen URI:n HSM:stä ja sisällyttää sen asetustiedostoon.
Muista
Avaimen URI:n on oltava tässä muodossa:
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=privateLuo
openvpn/
-hakemisto allecertificate-authority/
.$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/Allekirjoita
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.crtHae
server.crt
tiedosto palvelinkoneelle.
Siirrä allekirjoitetut varmenteet palvelimelle
Kopioi CA-koneelta tiedostot
server.crt
jachain.crt
OpenVPN-palvelimelle. Tässä esimerkissä käytämme komentoascp
seuraavasti:$ scp openvpn/{server.crt,chain.crt} admin@your_openvpnserver_ip:/tmpAseta varmenteet palvelimen hakemistoon
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/serverVaroitus
CA-varmenne ja
chain.crt
Edellä esitetyssä tapauksessa varmentaja palauttaa allekirjoitetun sever-varmenteen ja sisältää varmentajan varmenteen
CA.crt
, joka onchain.crt
-tiedosto. Tämä voidaan tehdä turvattoman kanavan kautta, mutta asiakasta kehotetaan kuitenkin varmistamaan, onko vastaanotettuchain.crt
kelvollinen, jos siirto on epäluotettava.Tiedosto
chain.crt
on mahdollista nimetä uudelleenCA.crt
-tiedostoksi kohdekoneella, käytämme kuitenkinchain.crt
seuraavissa ohjeissa.
6. Määritä OpenVPN-palvelin#
TLS:ää käyttävä yhteys vaatii useita varmenteita ja avaimia todennusta varten. Nyt kun olemme myöntäneet ja allekirjoittaneet ne, voimme sijoittaa ne oikeisiin hakemistoihin. Jako varmenteista ja avaimista, joiden on sijaittava juurihakemistossa, on seuraava:
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)OpenVPN-palvelimellasi voit nyt luoda konfiguraatiotiedoston
server.conf
suosikkitekstieditorillasi. Tiedosto voidaan konfiguroida tarpeidesi mukaan, ja samalla varmistamme, että palvelinvarmenteen ja avaimen osiot muutetaan niiden nimien mukaan, jotka valitsit allekirjoittamillesi tiedostoille:# OpenVPN Server Certificate - CA, server key and certificate ca chain.crt cert server.crt key server.keyTässä on asetustiedosto, jota voimme käyttää näiden ohjeiden testaamiseen:
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 versionVoimme testata, toimiiko kokoonpano oikein, käyttämällä tätä komentoa:
$ sudo openvpn --server --config server.conf
7. Käynnistä OpenVPN-palvelu palvelimella#
Ota OpenVPN-palvelu käyttöön lisäämällä se systemctl:ään ja käynnistä se näillä komennoilla:
$ sudo systemctl -f enable openvpn@server $ sudo systemctl start openvpn@serverVoit tarkistaa, onko OpenVPN-palvelu aktiivinen, käyttämällä tätä komentoa:
$ sudo systemctl status openvpn@serverOpenVPN:n pitäisi olla käynnissä tässä vaiheessa.
Asiakaspuolen konfigurointi#
1. Asenna OpenVPN ja Easy-RSA#
Asenna ohjelmisto
Voimme käyttää suoraan
dnf install
asentaaksemme OpenVPN 2.4.9 ja Easy-RSA 3.0.7.$ sudo dnf install openvpn easy-rsaSitten luodaan ei-root-hakemisto Easy RSA:lle nimellä
Easy-RSA`
.$ mkdir ~/easyrsaJa linkitä se juuri asentamaamme Easy RSA -pakettiin.
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2. Luo PKI OpenVPN-asiakkaalle.#
Samalla tavalla kuin loimme PKI:n OpenVPN-palvelimelle, luomme PKI:n Easy-RSA:n avulla asiakkaan puolelle.
3. Luo client.req
ja client.key
.#
Samalla tavalla kuin annoimme avainparin palvelimelle, luomme asiakkaalle avainparin, joka koostuu tiedostosta
client.req
ja tiedostostaclient.key
. Jälkimmäinen on pidettävä salassa asiakaskoneella.
4. Allekirjoita client.req
ja anna client.crt
tiedosto.#
Siirtääksemme tiedoston
client.req
CA-koneelle, käytämme samaa menetelmää kuin tiedostonserver.req
kohdalla.Kun varmenne on siirretty, allekirjoitamme varmenteen allekirjoituspyyntötiedoston CA-koneella tällä komennolla
$ 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. Tuo client.crt
Nitrokey-koneeseen CA-koneesta.#
Kun
client.crt
-tiedosto on luotu, liitämme Nitrokey Pro 2 -laitteen CA-koneeseen ja tuomme.crt
-tiedoston Pro 2 -laitteeseen tällä komennolla:$ pkcs15-init --store-certificate client.crt --id 3Voit nähdä, onko avain tallennettu Nitrokey-avaimeen tehokkaasti käyttämällä tätä komentoa:
$ pkcs15-tool -cTai vaihtoehtoisesti
$ pkcs11-tool --list-objectsLisää komentoja löydät OpenSC wikistä.
6. Hae chain.crt
-tiedosto CA-koneelta.#
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. Määritä asiakasohjelma toimimaan vuorovaikutuksessa Nitrokeyn kanssa.#
Takaisin asiakaskoneessa kytkemme Nitrokey Pron ja käytämme sitä VPN-yhteyden muodostamiseen palvelimeen. Yleisesti ottaen TLS:ää käyttävä yhteys vaatii useita varmenteita ja avaimia todennusta varten:
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyTätä opasta varten voimme käyttää seuraavaa
client.conf
-tiedostoa ja lisätä siihen tarvittavat asetukset: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
Määritä oikea kohde
Kukin PKCS#11-palveluntarjoaja voi tukea useita laitteita. Voit tarkastella käytettävissä olevien kohteiden luetteloa seuraavalla komennolla:
$ 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=%03Jokaisella varmenne/yksityinen avain -parilla on yksilöllinen
Serialized id
merkkijono. Pyydetyn varmenteen sarjallistettu id-merkkijono on määritettävä asetustiedostossa. Tämä voidaan tehdä lisäämälläpkcs11-id
-vaihtoehto käyttämällä yksinkertaisia lainausmerkkejä.pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'Lisää haettu sarjallistettu tunnus konfiguraatiotiedostoon.
Avaa server.conf-tiedosto suosikkitekstieditorillasi ja lisää siihen seuraavat rivit, mutta huolehdi siitä, että lisäät omat
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'OpenVPN- tunnistautumiseen liittyviä lisäasetuksia varten voit myös lisätä muutaman rivin avainten hallintaa varten, vaikka se onkin vapaaehtoista.
Muista
Klikkaa nähdäksesi koodin
# 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 PINValinnainen vaihe
Jos haluat testata kokoonpanoa Nitrokey-koodin kanssa ja ilman sitä, voit lisätä rivejä samaan
client.conf
ja kommentoida/poistaa kommentit tarpeidesi mukaan:Muista
Klikkaa nähdäksesi koodin
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1OpenVPN-asiakkaan määrittäminen
Lopullisen konfiguraatiotiedoston
client.conf
pitäisi näyttää tältä: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)
Kättelyn muodostamiseksi sinun on määritettävä OpenVPN:n sisältämä 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
Tällä muutoksella et saa virheitä, kuten on raportoitu täällä, täällä ja täällä.
Tunnetut ongelmat
OpenVPN-kirjautumiseen OpenSC:n kanssa liittyy joitakin tunnettuja ongelmia. Tutustu näihin ongelmiin täällä.
8. Käynnistä OpenVPN-asiakasohjelma#
Käynnistä OpenVPN-palvelu asiakkaalla
Ota OpenVPN-palvelu käyttöön ja käynnistä se näillä komennoilla:
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.serviceVoit tarkistaa, onko OpenVPN-palvelu aktiivinen, käyttämällä tätä komentoa:
$ sudo systemctl status openvpn-server@server.serviceSyötä käyttäjän PIN-koodi
Kun OpenVPN-asiakasohjelma suoritetaan, Nitrokeyn PIN-koodi on syötettävä:
$ 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: ******Varoitus
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)Joissakin tapauksissa se ei pyydä PIN-koodia päätelaitteessa. Yksi kiertotapa olisi käyttää tätä komentoa kirjautumiseen PIN-koodilla:
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>Vaihtoehtoisesti voit kokoonpanna OpenVPN-asiakasohjelman uudelleen, kun systemd-tuki on poistettu käytöstä, ja se kysyy PIN-koodia odotetusti.
Toinen vaihtoehto olisi kirjautua OpenVPN-instanssiin Viscosity-asiakasohjelmalla, joka tarjoaa paremman käyttökokemuksen erityisesti PIN-koodin syöttämisessä.