From eb73383906a75995c48e2e093d95512d6adf8ca7 Mon Sep 17 00:00:00 2001 From: Jan Philipp Timme Date: Wed, 12 Sep 2018 14:04:46 +0200 Subject: [PATCH] Improve documentation for CA --- CA-DOC-Inhalt.tex | 98 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 67 insertions(+), 31 deletions(-) diff --git a/CA-DOC-Inhalt.tex b/CA-DOC-Inhalt.tex index ce80b6c..96b64ec 100644 --- a/CA-DOC-Inhalt.tex +++ b/CA-DOC-Inhalt.tex @@ -3,79 +3,115 @@ Dieses Dokument wurde im Rahmen der Masterarbeit \enquote{Konzeption und Umsetzu Im Rahmen der Masterarbeit wird beschrieben, wie ein IP6-VPN-Dienst auf Basis von OpenVPN konzipiert und eingerichtet wird. Für den Betrieb dieses Dienst wird eine Zertifizierungsstelle (\textit{Certificate Authority, kurz CA}) benötigt, die für Benutzer und den Serverbetreiber SSL-Zertifikate ausstellt. -In diesem Dokument wird beschrieben, wie die Zertifizierungsstelle aufgebaut und konfiguriert wird. -Weiterhin sind Anleitungen für die Benutzer und die Serveradministratoren des VPN-Dienst enthalten, mit deren Hilfe Zertifikate bei der Zertifizierungsstelle beantragt werden können. -Für die Zertifizierungsstelle ist eine Anleitung enthalten, anhand derer Zertifikate für eingereichte Zertifikatsanträge ausgestellt werden können. - +In diesem Dokument wird beschrieben, wie die CA aufgebaut und konfiguriert wird. +Weiterhin sind Anleitungen für die Benutzer und die Serveradministratoren des VPN-Dienst enthalten, mit deren Hilfe Zertifikate bei der CA beantragt werden können. +Für die CA ist eine Anleitung enthalten, anhand derer Zertifikate für eingereichte Zertifikatsanträge ausgestellt werden können. \todo{Improve this section} + \chapter{Einrichtung der CA} +Bevor durch die CA Zertifikate ausgestellt werden könnnen, muss sie erst einmal aufgebaut werden. +Dies geschieht auf Basis von EasyRSA, welches von den OpenVPN-Entwicklern zur Verfügung gestellt wird. - - -\section{Beschaffen von EasyRSA3} -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} +Aktuelle Versionen von EasyRSA sind unter \url{https://github.com/OpenVPN/easy-rsa/releases} zu finden. +Neben den auf \texttt{github.com} zur Verfügung stehenden Releases werden auch GPG-Signaturen angeboten, über welche die Releases authentisiert werden können. +Im oben erwähnten Repository sind unterhalb von \texttt{./release-keys/README.md}\footnote{\url{https://github.com/OpenVPN/easy-rsa/tree/master/release-keys}} passende GPG-Schlüssel aufgeführt. \begin{lstlisting} -# Aktuelles Release v3.0.4 beschaffen und den dazu passenden GPG-Key +# Aktuelles Release v3.0.4 beschaffen +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 + +# Aktuell gültige(n) GPG-Schlüssel für die Signaturprüfung beschaffen 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 + +# Signatur der heruntergeladenen Datei überprüfen gpg --verify EasyRSA-3.0.4.tgz.sig EasyRSA-3.0.4.tgz +\end{lstlisting} + +Nach der erfolgreichen Authentisierung des heruntergeladenen Archivs kann dieses nun entpackt und verwendet werden. +\begin{lstlisting} tar xzf EasyRSA-3.0.4.tgz cd EasyRSA-3.0.4 \end{lstlisting} - \section{Konfiguration der CA} - +Im nächsten Schritt wird auf Basis der Datei \texttt{vars.example} die Konfigurationsdatei \texttt{vars} erzeugt und anschließend bearbeitet. \begin{lstlisting} -# Vorgeschlagene Einstellungen, die in der vars-Datei getätigt werden sollten. +cp vars.example vars +vim vars +\end{lstlisting} + +Folgende Einstellungen werden angepasst: +\begin{lstlisting} +# Die volle Organisationsstruktur in Zertifikate aufnehmen set_var EASYRSA_DN "org" +# Standardwerte für alle Zertifikatsanträge set_var EASYRSA_REQ_COUNTRY "DE" set_var EASYRSA_REQ_PROVINCE "Niedersachsen" set_var EASYRSA_REQ_CITY "Hannover" set_var EASYRSA_REQ_ORG "Hochschule Hannover" set_var EASYRSA_REQ_EMAIL "F4-I-IT-Team@hs-hannover.de" -set_var EASYRSA_REQ_OU "Abteilung Informatik" +set_var EASYRSA_REQ_OU "Abteilung Informatik" +# Alle Zertifikate sollen den RSA-Algorithmus mit 4096 Bit Schlüssellänge verwenden set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO rsa +# Das Wurzelzertifikat soll etwa 10 Jahre gültig sein set_var EASYRSA_CA_EXPIRE 3650 + +# Ausgestellte Zertifikate sollen standardmäßig etwa ein halbes Jahr gültig sein set_var EASYRSA_CERT_EXPIRE 180 + +# Eine erzeugte CRL soll etwa ein halbes Jahr gültig sein set_var EASYRSA_CRL_DAYS 180 \end{lstlisting} - -\begin{lstlisting} -cp vars.example vars -vim vars -# Konfiguration der CA anpassen: -\end{lstlisting} +Sind alle Änderungen durchgeführt worden, ist die Konfiguration der CA damit vollständig abgeschlossen. \section{Initialisierung der CA} - +Als nächstes muss die Verzeichnisstruktur der CA initialisiert werden und das Wurzelzertifikat erzeugt werden. \begin{lstlisting} -# Verzeichnisstruktur erzeugen (löscht bereits existierende Struktur!) +# Verzeichnisstruktur initialisieren ./easyrsa init-pki -# CA-Zertifikat erzeugen, Passwort für privaten Schlüssel wird verlangt +# CA-Zertifikat erzeugen ./easyrsa build-ca \end{lstlisting} +Besteht der begründete Wunsch, den privaten Schlüssel der CA \textbf{nicht} mit einem Passwort zu schützen, so kann das Argument \texttt{nopass} an den \texttt{build-ca}-Befehl angehängt werden. +Sollte der private Schlüssel in die Hände eines Angreifers gelangen, so kann dieser beliebige Zertifikate durch die CA ausstellen. +Der Schutz des privaten Schlüssels der CA durch ein Passwort wird aus diesem Grund ausdrücklich empfohlen! -\section{Bereitstellung der Konfiguration für Benutzer} -Die Datei \texttt{vars} wird benötigt. -Zusätzlich wäre es für einige Benutzer ggf. hilfreich, die Windows- und Unix-Version konfiguriert zum Download anzubieten. +\section{Bereitstellung der CA-Konfiguration für Benutzer} +Damit Benutzer korrekte Zertifikatsanträge erzeugen können, muss ihnen die Datei \texttt{vars} zur Verfügung gestellt werden. +Um Kompatibilitätsprobleme durch die Verwendung von verschiedenen EasyRSA-Versionen auszuschließen, wird empfohlen für Benutzer ein passendes Paket zusammenzustellen. -Daher muss durch die CA mindestens diese Datei bereitgestellt werden. -In dem Zug kann man auch gleich ein vorkonfiguriertes Paket mit EasyRSA bereitstellen. +Als Basis wird jeweils das \texttt{*.zip}-Release empfohlen, da dieses für Windows-Benutzer notwendige Programme wie \texttt{awk} und \texttt{sed} bereits enthält. +\begin{lstlisting} +# Aktuelles Release v3.0.4 beschaffen +wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/ \ + EasyRSA-3.0.4.zip +wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/ \ + EasyRSA-3.0.4.zip.sig + +# Aktuell gültige(n) GPG-Schlüssel für die Signaturprüfung beschaffen +gpg --recv-keys 6F4056821152F03B6B24F2FCF8489F839D7367F3 + +# Signatur der heruntergeladenen Datei überprüfen +gpg --verify EasyRSA-3.0.4.zip.sig EasyRSA-3.0.4.zip +\end{lstlisting} + +Anschließend kann die konfigurierte \texttt{vars}-Datei der CA zum ZIP-Archiv hinzugefügt werden und anschließend den Benutzern zur Verfügung gestellt werden. +\begin{lstlisting} +zip VPN-EasyRSA.zip /path/to/CA/vars +\end{lstlisting} \chapter{Beantragen von Clientzertifikaten}