Ubuntu 20.04 Focal Fossa ist die letzte langfristige Unterstützung einer der am häufigsten verwendeten Linux-Distributionen. In diesem Tutorial werden wir sehen, wie Sie dieses Betriebssystem verwenden, um einen OpenVPN-Server zu erstellen, und wie Sie eine .ovpn
erstellen Datei, die wir verwenden, um von unserem Client-Rechner aus eine Verbindung herzustellen.
In diesem Tutorial lernen Sie:
- Wie man eine Zertifizierungsstelle generiert
- Generierung von Server- und Client-Zertifikaten und -Schlüsseln
- So signieren Sie ein Zertifikat bei der Zertifizierungsstelle
- Erstellen von Diffie-Hellman-Parametern
- Generieren eines tls-auth-Schlüssels
- So konfigurieren Sie den OpenVPN-Server
- Wie man eine .ovpn-Datei generiert, um sich mit dem VPN zu verbinden
Softwareanforderungen und verwendete Konventionen
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | Ubuntu 20.04 Focal Fossa |
Software | openvpn, ufw, easy-rsa |
Andere | Root-Berechtigungen zum Ausführen von Verwaltungsaufgaben |
Konventionen | # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden |
Szenario einrichten
Bevor wir mit der eigentlichen VPN-Konfiguration fortfahren, lassen Sie uns über die Konventionen und die Einrichtung sprechen, die wir in diesem Tutorial anwenden werden.
Wir werden zwei Maschinen verwenden, die beide mit Ubuntu 20.04 Focal Fossa betrieben werden . Die erste, camachine
wird verwendet, um unsere Zertifizierungsstelle zu hosten; die zweite, openvpnmachine
wird derjenige sein, den wir als eigentliches VPN einrichten Server. Es ist möglich, denselben Computer für beide Zwecke zu verwenden, aber es wäre weniger sicher, da eine Person, die den Server verletzt, die Zertifizierungsstelle „verkörpern“ und sie zum Signieren unerwünschter Zertifikate verwenden könnte (das Problem ist nur dann relevant, wenn Sie planen, mehr als einen Server zu haben oder dieselbe Zertifizierungsstelle für andere Zwecke zu verwenden). Um Dateien zwischen einem Computer und dem anderen zu verschieben, verwenden wir den scp
(Sichere Kopie) Befehl. Die 10 Hauptschritte, die wir ausführen werden, sind die folgenden:
- Generierung der Zertifizierungsstelle;
- Generierung des Serverschlüssels und Zertifikatsanforderung;
- Signieren der Serverzertifikatsanfrage bei der CA;
- Generierung der Diffie-Hellman-Parameter auf dem Server;
- Generierung des tls-auth-Schlüssels auf dem Server;
- OpenVPN-Konfiguration;
- Netzwerk- und Firewall-Konfiguration (ufw) auf dem Server;
- Generierung eines Client-Schlüssels und einer Zertifikatsanforderung;
- Signieren des Client-Zertifikats bei der CA;
- Erstellung der Client-.ovpn-Datei, die für die Verbindung mit dem VPN verwendet wird.
Schritt 1 – Generierung der Certificate Authority (CA)
Der erste Schritt auf unserem Weg besteht in der Schaffung der Certificate Authority auf der dedizierten Maschine. Wir werden als nicht privilegierter Benutzer arbeiten, um die benötigten Dateien zu generieren. Bevor wir beginnen, müssen wir easy-rsa
installieren Paket:
$ sudo apt-get update && sudo apt-get -y install easy-rsa
Wenn das Paket installiert ist, können wir make-cadir
verwenden Befehl zum Generieren eines Verzeichnisses mit den erforderlichen Tools und Konfigurationsdateien, in diesem Fall nennen wir es certificate_authority
. Einmal erstellt, bewegen wir uns darin:
$ make-cadir certificate_authority && cd certificate_authority
Innerhalb des Verzeichnisses finden wir eine Datei namens vars
. In der Datei können wir einige Variablen definieren, die für die Zertifikatsgenerierung verwendet werden. Ein kommentierter Satz dieser Variablen ist in Zeile 91
zu finden bis 96
. Entfernen Sie einfach den Kommentar und weisen Sie die entsprechenden Werte zu:
set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "California" set_var EASYRSA_REQ_CITY "San Francisco" set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "My Organizational Unit"
Sobald die Änderungen gespeichert sind, können wir fortfahren und die PKI generieren (Public Key Infrastructure) mit dem folgenden Befehl, der ein Verzeichnis namens pki
erstellt :
$ ./easyrsa init-pki
Wenn die Infrastruktur vorhanden ist, können wir unseren CA-Schlüssel und unser Zertifikat generieren. Nach dem Ausführen des folgenden Befehls werden wir aufgefordert, eine Passphrase einzugeben für den ca-Schlüssel . Wir müssen jedes Mal dasselbe Passwort angeben, wenn wir mit der Behörde interagieren. Ein allgemeiner Name für das Zertifikat sollte auch vorgelegt werden. Dies kann ein beliebiger Wert sein; Wenn wir an der Eingabeaufforderung einfach die Eingabetaste drücken, wird die Standardeinstellung verwendet, in diesem Fall Easy-RSA CA
:
$ ./easyrsa build-ca
Hier ist die Ausgabe des Befehls:
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) ..........+++++ ....................................................................+++++ e is 65537 (0x010001) Can't load /home/egdoc/certificate_authority/pki/.rnd into RNG 140296362980608:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/home/egdoc/certificate_authority/pki/.rnd You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/egdoc/certificate_authority/pki/ca.crt
Die build-ca
Befehl erzeugte zwei Dateien; ihr Pfad, relativ zu unserem Arbeitsverzeichnis, lautet:
- pki/ca.crt
- pki/private/ca.key
Das erste ist das öffentliche Zertifikat, das zweite der Schlüssel, der zum Signieren der Server- und Client-Zertifikate verwendet wird und daher so sicher wie möglich aufbewahrt werden sollte.
Eine kleine Anmerkung, bevor wir fortfahren:In der Ausgabe des Befehls ist Ihnen möglicherweise eine Fehlermeldung aufgefallen. Obwohl der Fehler nicht harmlos ist, besteht eine Problemumgehung darin, die dritte Zeile der openssl-easyrsa.cnf
zu kommentieren Datei, die sich im generierten Arbeitsverzeichnis befindet. Das Problem wird im Openssl-Github-Repository diskutiert. Nach der Änderung sollte die Datei so aussehen:
# For use with Easy-RSA 3.1 and OpenSSL or LibreSSL RANDFILE = $ENV::EASYRSA_PKI/.rnd
Machen wir uns also auf den Rechner, den wir als OpenVPN-Server verwenden werden, und generieren den Serverschlüssel und das Zertifikat.
Schritt 2 – Generierung des Serverschlüssels und Zertifikatsanforderung
In diesem Schritt generieren wir den Serverschlüssel und die Zertifikatsanforderung, die dann von der Zertifizierungsstelle signiert wird. Auf dem Rechner, den wir als OpenVPN-Server verwenden, müssen wir openvpn
installieren , easy-rsa
und ufw
Pakete:
$ sudo apt-get update && sudo apt-get -y install openvpn easy-rsa ufw
Um den Serverschlüssel und die Zertifikatanforderung zu generieren, führen wir dasselbe Verfahren durch, das wir auf dem Computer verwendet haben, der die Zertifizierungsstelle hostet:
- Wir erzeugen ein Arbeitsverzeichnis mit dem
make-cadir
Befehl und bewege dich darin. - Stellen Sie die in
vars
enthaltenen Variablen ein Datei, die für das Zertifikat verwendet wird. - Generieren Sie die Public-Key-Infrastruktur mit
./easyrsa init-pki
Befehl.
Nach diesen vorbereitenden Schritten können wir den Befehl zum Generieren des Serverzertifikats und der Schlüsseldatei ausgeben:
$ ./easyrsa gen-req server nopass
Diesmal, da wir den nopass
verwendet haben Option, werden wir während der Generierung des Serverschlüssels nicht aufgefordert, ein Passwort einzugeben . Wir werden weiterhin aufgefordert, einen Common Name einzugeben für das Serverzertifikat . In diesem Fall ist der verwendete Standardwert server
. Das werden wir in diesem Tutorial verwenden:
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Generating a RSA private key ....................+++++ .................+++++ writing new private key to '/home/egdoc/openvpnserver/pki/private/server.key.9rU3WfZMbW' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/egdoc/openvpnserver/pki/reqs/server.req key: /home/egdoc/openvpnserver/pki/private/server.key
Eine Zertifikatsignieranforderung und einen privaten Schlüssel wird generiert:
/home/egdoc/openvpnserver/pki/reqs/server.req
/home/egdoc/openvpnserver/pki/private/server.key
.
Die Schlüsseldatei muss innerhalb von /etc/openvpn
verschoben werden Verzeichnis:
$ sudo mv pki/private/server.key /etc/openvpn
Die Zertifikatsanforderung muss stattdessen zum Signieren an die Zertifizierungsstellenmaschine gesendet werden. Wir können scp
verwenden Befehl zum Übertragen der Datei:
$ scp pki/reqs/server.req egdoc@camachine:/home/egdoc/
Gehen wir zurück zu camachine
und das Zertifikat autorisieren.
Schritt 3 – Signieren des Serverzertifikats bei der CA
Auf dem Computer der Zertifizierungsstelle sollten wir die Datei finden, die wir im vorherigen Schritt in $HOME
kopiert haben Verzeichnis unseres Benutzers:
$ ls ~ certificate_authority server.req
Als erstes importieren wir die Zertifikatsanforderung. Um die Aufgabe zu erfüllen, verwenden wir den import-req
Aktion der easyrsa
Skript. Seine Syntax ist die folgende:
import-req <request_file_path> <short_basename>
In unserem Fall bedeutet dies:
$ ./easyrsa import-req ~/server.req server
Der Befehl generiert die folgende Ausgabe:
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.
Um die Anfrage zu signieren, verwenden wir den sing-req
action, die als erstes Argument den Typ der Anfrage (in diesem Fall Server) und den short_basename
verwendet wir im vorherigen Befehl (server) verwendet haben. Wir laufen:
$ ./easyrsa sign-req server server
Wir werden aufgefordert, zu bestätigen, dass wir das Zertifikat signieren möchten, und das Passwort anzugeben, das wir für den Schlüssel der Zertifizierungsstelle verwendet haben. Wenn alles wie erwartet läuft, wird das Zertifikat erstellt:
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 1080 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes Using configuration from /home/egdoc/certificate_authority/pki/safessl-easyrsa.cnf Enter pass phrase for /home/egdoc/certificate_authority/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'server' Certificate is to be certified until Mar 20 02:12:08 2023 GMT (1080 days) Write out database with 1 new entries Data Base Updated Certificate created at: /home/egdoc/certificate_authority/pki/issued/server.crt
Wir können jetzt die zuvor übertragene Anforderungsdatei von der openvpnmachine
löschen . Und kopieren Sie das generierte Zertifikat zurück in unser OpenVPN server, zusammen mit dem öffentlichen CA-Zertifikat:
$ rm ~/server.req $ scp pki/{ca.crt,issued/server.crt} egdoc@openvpnmachine:/home/egdoc
Zurück auf der openvpnmachine
Wir sollten die Dateien in unserem Home-Verzeichnis finden. Wir können sie jetzt nach /etc/openvpn
verschieben :
$ sudo mv ~/{ca.crt,server.crt} /etc/openvpn
Schritt 4 – Generierung der Diffie-Hellman-Parameter
Der nächste Schritt besteht in der Generierung eines Diffie-Hellman Parameter. Der Diffie-Hellman Schlüsselaustausch ist die Methode, mit der Kryptoschlüssel über einen öffentlichen, unsicheren Kanal übertragen werden. Der Befehl zum Generieren des Schlüssels lautet wie folgt (es kann eine Weile dauern):
$ ./easyrsa gen-dh
Der Schlüssel wird innerhalb des pki
generiert Verzeichnis als dh.pem
. Verschieben wir es nach /etc/openvpn
als dh2048.pem
:
$ sudo mv pki/dh.pem /etc/openvpn/dh2048.pem
Schritt 5 – Generierung des tls-auth-Schlüssels (ta.key)
Um die Sicherheit zu verbessern, OpenVPN implementiert tls-auth . Zitieren der offiziellen Dokumentation:
Die Direktive tls-auth fügt allen SSL/TLS-Handshake-Paketen eine zusätzliche HMAC-Signatur zur Integritätsprüfung hinzu. Jedes UDP-Paket, das nicht die korrekte HMAC-Signatur trägt, kann ohne weitere Verarbeitung verworfen werden. Die tls-auth HMAC-Signatur bietet eine zusätzliche Sicherheitsebene, die über die von SSL/TLS hinausgeht. Es kann vor Folgendem schützen:
– DoS-Angriffe oder Port-Flooding auf dem OpenVPN-UDP-Port.
– Port-Scanning, um festzustellen, welche Server-UDP-Ports sich in einem lauschenden Zustand befinden.
– Pufferüberlauf-Schwachstellen in der SSL/TLS-Implementierung.
– SSL/TLS-Handshake-Initiationen von nicht autorisierten Computern (während solche Handshakes letztendlich nicht authentifiziert werden würden, kann tls-auth sie zu einem viel früheren Zeitpunkt unterbrechen).
Um den tls_auth-Schlüssel zu generieren, können wir den folgenden Befehl ausführen:
$ openvpn --genkey --secret ta.key
Nach der Generierung verschieben wir den ta.key
Datei nach /etc/openvpn
:
$ sudo mv ta.key /etc/openvpn
Die Einrichtung unserer Serverschlüssel ist nun abgeschlossen. Wir können mit der eigentlichen Serverkonfiguration fortfahren.
Schritt 6 – OpenVPN-Konfiguration
Die OpenVPN-Konfigurationsdatei existiert standardmäßig nicht in /etc/openvpn
. Um es zu generieren, verwenden wir eine Vorlage, die mit openvpn
geliefert wird Paket. Lassen Sie uns diesen Befehl ausführen:
$ zcat \ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz \ | sudo tee /etc/openvpn/server.conf > /dev/null
Wir können jetzt die /etc/openvpn/server.conf
bearbeiten Datei. Die relevanten Teile sind unten gezeigt. Als erstes wollen wir überprüfen, ob die Namen der Schlüssel und Zertifikate, auf die verwiesen wird, mit denen übereinstimmen, die wir generiert haben. Wenn Sie diesem Tutorial gefolgt sind, sollte dies definitiv der Fall sein (Zeile 78-80
und 85
):
ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh2048.pem
Wir wollen den OpenVPN-Daemon mit niedrigen Rechten ausführen lassen, den nobody
user und nogroup
Gruppe. Der relevante Teil der Konfigurationsdatei befindet sich in Zeile 274
und 275
. Wir müssen nur den führenden ;
entfernen :
user nobody group nogroup
Eine weitere Zeile, aus der wir den Kommentar entfernen möchten, ist 192
. Dadurch leiten alle Clients ihr Standard-Gateway über das VPN um:
push "redirect-gateway def1 bypass-dhcp"
Zeilen 200
und 201
to kann auch verwendet werden, um dem Server zu ermöglichen, bestimmte DNS-Server an Clients zu senden. Die in der Konfigurationsdatei sind diejenigen, die von opendns.com
bereitgestellt werden :
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
An dieser Stelle ist die Datei /etc/openvpn
Verzeichnis sollte diese von uns generierten Dateien enthalten:
/etc/openvpn ├── ca.crt ├── dh2048.pem ├── server.conf ├── server.crt ├── server.key └── ta.key
Stellen wir sicher, dass sie alle root gehören:
$ sudo chown -R root:root /etc/openvpn
Wir können mit dem nächsten Schritt fortfahren:der Konfiguration der Netzwerkoptionen.
Schritt 7 – Netzwerk und ufw einrichten
Damit unser VPN funktioniert, müssen wir die IP-Weiterleitung aktivieren auf unserem Server. Dazu kommentieren wir einfach die Zeile 28
aus aus der /etc/sysctl.conf
Datei:
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
So laden Sie die Einstellungen neu:
$ sudo sysctl -p
Wir müssen auch die Paketweiterleitung in der ufw-Firewall zulassen, indem wir /etc/default/ufw
ändern Datei und Ändern der DEFAULT_FORWARD_POLICY
von DROP
ACCEPT
(Zeile 19
):
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that # if you change this you will most likely want to adjust your rules DEFAULT_FORWARD_POLICY="ACCEPT"
Wir müssen nun die folgenden Regeln am Anfang der /etc/ufw/before.rules
hinzufügen Datei. Hier gehen wir davon aus, dass die für die Verbindung verwendete Schnittstelle eth0
ist :
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT
Schließlich müssen wir eingehenden Datenverkehr für openvpn
zulassen Dienst im ufw-Firewall-Manager:
$ sudo ufw allow openvpn
An dieser Stelle können wir ufw neu starten, damit die Änderungen übernommen werden. Wenn Ihre Firewall zu diesem Zeitpunkt nicht aktiviert war, stellen Sie sicher, dass ssh
Service ist immer erlaubt, andernfalls könnten Sie abgeschnitten werden, wenn Sie remote arbeiten.
$ sudo ufw disable && sudo ufw enable
Wir können jetzt den openvpn.service beim Booten starten und aktivieren:
$ sudo systemctl restart openvpn && sudo systemctl enable openvpn
Schritt 8 – Generierung eines Clientschlüssels und einer Zertifikatsanforderung
Unser Server-Setup ist nun abgeschlossen. Der nächste Schritt besteht in der Generierung des Client-Schlüssels und der Zertifikatsanforderung. Das Verfahren ist das gleiche, das wir für den Server verwendet haben:Wir verwenden einfach „Client“ als Namen anstelle von „Server“, generieren den Schlüssel und die Zertifikatsanforderung und übergeben diese dann zum Signieren an die CA-Maschine.
$ ./easyrsa gen-req client nopass
Wie zuvor werden wir aufgefordert, einen gemeinsamen Namen einzugeben. Die folgenden Dateien werden generiert:
- /home/egdoc/openvpnserver/pki/reqs/client.req
- /home/egdoc/openvpnserver/pki/private/client.key
Kopieren wir die client.req
an die CA-Maschine:
$ scp pki/reqs/client.req egdoc@camachine:/home/egdoc
Sobald die Datei kopiert wurde, auf camachine
, importieren wir die Anfrage:
$ ./easyrsa import-req ~/client.req client
Dann signieren wir das Zertifikat:
$ ./easyrsa sign-req client client
Nach Eingabe des CA-Passworts wird das Zertifikat als pki/issued/client.crt
erstellt . Lassen Sie uns die Anforderungsdatei entfernen und das signierte Zertifikat zurück auf den VPN-Server kopieren:
$ rm ~/client.req $ scp pki/issued/client.crt egdoc@openvpnmachine:/home/egdoc
Lassen Sie uns der Einfachheit halber ein Verzeichnis erstellen, in dem alle Client-bezogenen Daten gespeichert werden, und den Client-Schlüssel und das Zertifikat darin verschieben:
$ mkdir ~/client $ mv ~/client.crt pki/private/client.key ~/client
Gut, wir haben es fast geschafft. Jetzt müssen wir die Client-Konfigurationsvorlage kopieren, /usr/share/doc/openvpn/examples/sample-config-files/client.conf
innerhalb von ~/client
Verzeichnis und passen Sie es unseren Bedürfnissen an:
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client
Hier sind die Zeilen, die wir in der Datei ändern müssen. In Zeile 42
Setzen Sie die tatsächliche Server-IP oder den Hostnamen anstelle von my-server-1
ein :
remote my-server-1 1194
Auf Zeilen 61
und 62
Entfernen Sie den führenden ;
Zeichen, um die Berechtigungen nach der Initialisierung herunterzustufen:
user nobody group nogroup
Auf Zeilen 88
bis 90
und 108
Wir können sehen, dass auf das CA-Zertifikat, das Client-Zertifikat, den Client-Schlüssel und den tls-auth-Schlüssel verwiesen wird. Wir möchten diese Zeilen auskommentieren, da wir den eigentlichen Inhalt der Dateien zwischen zwei dedizierten „Tags“ einfügen:
<ca></ca>
für das CA-Zertifikat<cert></cert>
für das Client-Zertifikat<key></key>
für den Kundenschlüssel<tls-auth></tls-auth>
für den tls-auth-Schlüssel
Sobald die Zeilen kommentiert sind, hängen wir den folgenden Inhalt am Ende der Datei an:
<ca> # Here goes the content of the ca.crt file </ca> <cert> # Here goes the content of the client.crt file </cert> <key> # Here goes the content of the client.key file </key> key-direction 1 <tls-auth> # Here goes the content of the ta.key file </tls-auth>
Sobald die Bearbeitung der Datei abgeschlossen ist, benennen wir sie in .ovpn
um Suffix:
$ mv ~/client/client.conf ~/client/client.ovpn
Alles, was Sie noch tun müssen, ist, die Datei in unsere Client-Anwendung zu importieren, damit sie sich mit unserem VPN verbindet. Wenn wir beispielsweise die GNOME-Desktopumgebung verwenden, können wir die Datei aus Netzwerk importieren Abschnitt des Bedienfelds. Klicken Sie im Abschnitt VPN einfach auf +
und dann auf „Aus Datei importieren“, um die „.ovpn“-Datei auszuwählen und zu importieren, die Sie zuvor auf Ihren Client-Computer übertragen haben.
GNOME-Schnittstelle zum Importieren von .ovpn-Dateien
Schlussfolgerungen
In diesem Tutorial haben wir gesehen, wie man ein funktionierendes OpenVPN-Setup erstellt. Wir haben eine Zertifizierungsstelle generiert und zum Signieren von Server- und Client-Zertifikaten verwendet, die wir zusammen mit den entsprechenden Schlüsseln generiert haben. Wir haben gesehen, wie man den Server konfiguriert und das Netzwerk einrichtet, die Paketweiterleitung zulässt und die erforderlichen Änderungen an der ufw-Firewall-Konfiguration durchführt. Schließlich haben wir gesehen, wie man eine Client-Datei .ovpn generiert Datei, die aus einer Client-Anwendung importiert werden kann, um sich einfach mit unserem VPN zu verbinden. Viel Spaß!