2018-09-03 10:21:39 +02:00
\section { Aufbau einer CA für den VPN-Dienst}
2018-09-01 22:01:03 +02:00
2018-09-03 10:21:39 +02:00
\begin { itemize}
\item Beschaffung der gewünschten Version von EasyRSA + Verifikation
\item Integration der eigenen Anleitungen und Konfiguration
\item Verpacken für Clients/Server und CA selbst
\item Installation von easy-rsa
\end { itemize}
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
Voraussetzung: openssl muss bereits installiert sein und im Pfad eingetragen sein.
Unter Windows kann das von OpenVPN mitgebrachte openssl verwendet werden - dazu kann der Ordner "bin" einfach in den Pfad eingetragen werden.
Ein Neustart des Computers ist notwendig, um die Änderung zu übernehmen.
Mehr dazu unter https://github.com/OpenVPN/easy-rsa/blob/v3.0.4/distro/windows/README-Windows.txt
2018-09-03 10:21:39 +02:00
OpenSSL setzt eine Konfigurationsdatei voraus - unter Windows fehlt diese.
Daher muss durch die CA mindestens diese Datei bereitgestellt werden.
In dem Zug kann man auch gleich ein vorkonfiguriertes Paket mit EasyRSA bereitstellen.
\section { Beschaffung/Installation von EasyRSA}
2018-09-01 22:01:03 +02:00
2018-09-03 10:21:39 +02:00
Aktuelle Releases sind unter \url { https://github.com/OpenVPN/easy-rsa/releases} zu finden.
GPG-Schlüssel zur Authentisierung der Releases sind im easy-rsa Repository unterhalb von \texttt { ./release-keys/README.md} aufgeführt.
\url { https://github.com/OpenVPN/easy-rsa/tree/master/release-keys}
2018-09-01 22:01:03 +02:00
2018-09-03 10:21:39 +02:00
\begin { lstlisting}
2018-09-01 22:01:03 +02:00
# Release v3.0.4 beschaffen und den dazu passenden GPG-Key
gpg --recv-keys 6F4056821152F03B6B24F2FCF8489F839D7367F3
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz.sig
gpg --verify EasyRSA-3.0.4.tgz.sig EasyRSA-3.0.4.tgz
tar xzf EasyRSA-3.0.4.tgz
cd EasyRSA-3.0.4
2018-09-03 10:21:39 +02:00
\end { lstlisting}
2018-09-01 22:01:03 +02:00
2018-09-03 10:21:39 +02:00
\section { Initialisierung der CA}
2018-09-01 22:01:03 +02:00
2018-09-03 10:21:39 +02:00
\begin { lstlisting}
2018-09-01 22:01:03 +02:00
cp vars.example vars
vim vars
# Konfiguration der CA anpassen:
# * Standardgültigkeit für ausgestellte Zertifikate
# * Name der CA, etc
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
# Verzeichnisstruktur erzeugen (löscht bereits existierende Struktur!)
./easyrsa init-pki
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
# CA-Zertifikat erzeugen, Passwort für privaten Schlüssel wird verlangt
./easyrsa build-ca
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
# Regelbetrieb der CA
# Benutzer erzeugt Request
openssl req -utf8 -new -newkey rsa:4096 -keyout /tmp/cert.key -out /tmp/cert.req -subj "/CN=foobar" [-nodes]
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
# Request importieren (erfordert einen eindeutigen Namen - hier "timmeja")
./easyrsa import-req /tmp/EasyRSA-3.0.4/pki/reqs/jpt-client.req timmeja
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
# Request signieren mit Client-Rolle (erfordert Passwort für privaten Schlüssel der CA)
./easyrsa sign-req client timmeja
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
# Zertifikat inspizieren und an Antragsteller übergeben
openssl x509 -in pki/issued/timmeja.crt -noout -text
2018-08-30 21:42:43 +02:00
2018-09-01 22:01:03 +02:00
# CRL erzeugen und an OpenVPN-Server übergeben
./easyrsa gen-crl
2018-09-03 10:21:39 +02:00
\end { lstlisting}
2018-08-30 21:42:43 +02:00
2018-09-03 10:21:39 +02:00
\textbf { Achtung:} Wenn die CRL ausgelaufen ist, muss sie neu generiert werden. Das kann den VPN-Server im Betrieb blockieren.
2018-09-01 22:01:03 +02:00
Daher ist eine hohe Gültigkeitsdauer mit on-demand-replacement eine Option.
Ansonsten empfiehlt es sich, diesen Kram zu automatisieren. Regelmäßig eine neue CRL durch CA bereitstellen, von dieser beziehen und den VPN-Server ggf. neustarten.
2018-09-03 10:21:39 +02:00
In der Serverkonfiguration: \texttt { verify-crl /path/to/crl.pem}
2018-08-30 21:42:43 +02:00