From 13efbf62d17afeab102676f272dc16fd50177461 Mon Sep 17 00:00:00 2001 From: Jan Philipp Timme Date: Thu, 13 Sep 2018 12:55:15 +0200 Subject: [PATCH] Improve CA documentation --- CA-DOC-Inhalt.tex | 86 +++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 29 deletions(-) diff --git a/CA-DOC-Inhalt.tex b/CA-DOC-Inhalt.tex index c1f76ea..fdeca62 100644 --- a/CA-DOC-Inhalt.tex +++ b/CA-DOC-Inhalt.tex @@ -1,7 +1,7 @@ \chapter{Vorwort} Dieses Dokument wurde im Rahmen der Masterarbeit \enquote{Konzeption und Umsetzung eines IPv6-VPN für die Abteilung Informatik} erstellt. 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 ausstellen kann. +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 ausstellen kann. In diesem Dokument wird die Einrichtung und der Betrieb der CA beschrieben. Weiterhin sind Anleitungen für Benutzer und Serveradministratoren des VPN-Dienstes enthalten, in denen die Beantragung von Client- und Server-Zertifikaten bei der CA beschrieben wird. @@ -11,13 +11,27 @@ Entscheidungen, die zu der hier beschriebenen Konfiguration geführt haben könn \chapter{Einrichtung der CA} -Bevor durch die CA Zertifikate ausgestellt werden könnnen, muss sie erst einmal aufgebaut werden. +Bevor Zertifikate durch die CA ausgestellt werden könnnen, muss die CA erst eingerichtet werden. Dies geschieht auf Basis von EasyRSA, welches von den OpenVPN-Entwicklern zur Verfügung gestellt wird. +EasyRSA ist eine Sammlung von Skripten, die unter Verwendung von OpenSSL den Funktionsumfang einer Zertifizierungsstelle bieten. +Durch die Kapselung von OpenSSL-Befehlen und die Verwendung einer übersichtlichen Konfigurationsdatei ermöglicht EasyRSA das komfortable und sichere Verwalten einer CA. +Für die Durchführung aller Schritte dieser Anleitung werden die folgenden Programme benötigt. +\begin{itemize} +\item \texttt{openssl} +\item \texttt{gnupg} +\item \texttt{wget} +\item \texttt{zip} +\end{itemize} + + +\section{Installation der CA} 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. +Im oben erwähnten Repository sind unterhalb von \texttt{./release-keys/README.md}\footnote{\url{https://github.com/OpenVPN/easy-rsa/tree/v3.0.4/release-keys}} passende GPG-Schlüssel aufgeführt. +Zum Zeitpunkt der Erstellung dieses Dokuments (13.09.2018) ist Version 3.0.4 aktuell. +Im ersten Schritt wird die aktuelle Version von EasyRSA beschafft und authentisiert. \begin{lstlisting} # Aktuelles Release v3.0.4 beschaffen wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/ \ @@ -46,56 +60,69 @@ cp vars.example vars vim vars \end{lstlisting} -In der Konfigurationsdatei werden folgende Einstellungen auskommentiert und angepasst: -\begin{lstlisting} -# Die volle Organisationsstruktur in Zertifikate aufnehmen -set_var EASYRSA_DN "org" +In der so erzeugten Konfigurationsdatei werden nun die folgenden Einträge auskommentiert und entsprechend angepasst. -# Standardwerte für alle Zertifikatsanträge +Zertifikate sollen als \textit{Distinguished Name} (DN) das volle Organisationsschema enthalten. +Dadurch können Zertifikate bei Betrachtung leicht der Abteilung Informatik zugeordnet werden. +\begin{lstlisting} +set_var EASYRSA_DN "org" +\end{lstlisting} + +Die folgenden Werte sind Standardvorgaben des Organisationsschema für neue Zertifikatsanträge. +Lediglich der \textit{Common Name} (CN) wird für alle Zertifikate individuell gewählt. +\begin{lstlisting} 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" - -# Alle Zertifikate sollen den RSA-Algorithmus mit 4096 Bit Schlüssellänge verwenden +\end{lstlisting} +Alle erzeugten Zertifikate sollen auf RSA-Schlüsselpaaren mit 4096 Bit Länge basieren. +\begin{lstlisting} set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO rsa - -# Das Wurzelzertifikat soll etwa 10 Jahre gültig sein +\end{lstlisting} +Das Wurzelzertifikat der CA soll für 10 Jahre gültig sein. +\begin{lstlisting} set_var EASYRSA_CA_EXPIRE 3650 - -# Ausgestellte Zertifikate sollen etwa ein halbes Jahr gültig sein +\end{lstlisting} +Ausgestellte Zertifikate sollen ein halbes Jahr lang gültig sein. +\begin{lstlisting} set_var EASYRSA_CERT_EXPIRE 180 - -# Eine erzeugte CRL soll etwa ein halbes Jahr gültig sein +\end{lstlisting} +Die von der CA erzeugte \textit{Certificate Revocation List} (CRL) soll ein halbes Jahr lang gültig sein. +\begin{lstlisting} set_var EASYRSA_CRL_DAYS 180 \end{lstlisting} -Sind alle Änderungen durchgeführt worden, ist die Konfiguration der CA damit vollständig abgeschlossen. -TODO: Erklärung der Parameter. -CRL - Certificate Revocation List + +Mit der Durchführung der aufgeführten Änderungen ist die Konfiguration der CA abgeschlossen. + \section{Initialisierung der CA} -Als nächstes muss die Verzeichnisstruktur der CA initialisiert werden und das Wurzelzertifikat erzeugt werden. - +Als nächstes muss die Verzeichnisstruktur der CA initialisiert werden. \begin{lstlisting} -# Verzeichnisstruktur initialisieren ./easyrsa init-pki - -# CA-Zertifikat erzeugen +\end{lstlisting} +Im Anschluss kann das Wurzelzertifikat der CA erzeugt werden. +\begin{lstlisting} +# ./easyrsa build-ca nopass ./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. + +\textbf{Hinweis}: 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 Befehl \texttt{build-ca} angehängt werden. +Dies kann nützlich sein, um die regelmäßige Ausstellung einer CRL zu automatisieren. 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! +Ein Passwortschutz wird ausdrücklich empfohlen, sofern keine sonstigen Maßnahmen zum Schutz des privaten Schlüssels der CA vor unbefugtem Zugriff getroffen werden! \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. -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. +Als Basis wird jeweils das \texttt{*.zip}-Release der aktuellen Version von EasyRSA empfohlen, da dieses für Windows-Benutzer notwendige Abhängigkeiten wie \texttt{awk} und \texttt{sed} bereits enthält. + +Zunächst wird das aktuelle \texttt{*.zip}-Release von EasyRSA beschafft und authentisiert. \begin{lstlisting} # Aktuelles Release v3.0.4 beschaffen wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/ \ @@ -110,7 +137,7 @@ gpg --recv-keys 6F4056821152F03B6B24F2FCF8489F839D7367F3 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. +Nun kann die konfigurierte \texttt{vars}-Datei der CA zu dem beschafften \texttt{*.zip}-Archiv hinzugefügt werden. \begin{lstlisting} # Temporäres Verzeichnis erzeugen TD=`mktemp -d` @@ -129,9 +156,10 @@ zip -r VPN-EasyRSA.zip EasyRSA-3.0.4 cd - cp $TD/VPN-EasyRSA.zip . -# Temporäres Verzeichnis löschen +# Temporäres Verzeichnis entfernen rm -rf $TD \end{lstlisting} +Anschließend kann das angefertigte \texttt{*.zip}-Archiv den Benutzern zur Verfügung gestellt werden. \chapter{Beantragen von Zertifikaten}