Improve documentation for CA

This commit is contained in:
Jan Philipp Timme 2018-09-12 14:04:46 +02:00
parent 93688b634e
commit eb73383906
1 changed files with 67 additions and 31 deletions

View File

@ -3,39 +3,54 @@ 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. 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. 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. 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 Zertifizierungsstelle beantragt werden können. 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 Zertifizierungsstelle ist eine Anleitung enthalten, anhand derer Zertifikate für eingereichte Zertifikatsanträge ausgestellt 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} \todo{Improve this section}
\chapter{Einrichtung der CA} \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.
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.
\section{Beschaffen von EasyRSA3} 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.
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}
\begin{lstlisting} \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 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 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 tar xzf EasyRSA-3.0.4.tgz
cd EasyRSA-3.0.4 cd EasyRSA-3.0.4
\end{lstlisting} \end{lstlisting}
\section{Konfiguration der CA} \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} \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" set_var EASYRSA_DN "org"
# Standardwerte für alle Zertifikatsanträge
set_var EASYRSA_REQ_COUNTRY "DE" set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "Niedersachsen" set_var EASYRSA_REQ_PROVINCE "Niedersachsen"
set_var EASYRSA_REQ_CITY "Hannover" set_var EASYRSA_REQ_CITY "Hannover"
@ -43,39 +58,60 @@ set_var EASYRSA_REQ_ORG "Hochschule Hannover"
set_var EASYRSA_REQ_EMAIL "F4-I-IT-Team@hs-hannover.de" 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_KEY_SIZE 4096
set_var EASYRSA_ALGO rsa set_var EASYRSA_ALGO rsa
# Das Wurzelzertifikat soll etwa 10 Jahre gültig sein
set_var EASYRSA_CA_EXPIRE 3650 set_var EASYRSA_CA_EXPIRE 3650
# Ausgestellte Zertifikate sollen standardmäßig etwa ein halbes Jahr gültig sein
set_var EASYRSA_CERT_EXPIRE 180 set_var EASYRSA_CERT_EXPIRE 180
# Eine erzeugte CRL soll etwa ein halbes Jahr gültig sein
set_var EASYRSA_CRL_DAYS 180 set_var EASYRSA_CRL_DAYS 180
\end{lstlisting} \end{lstlisting}
Sind alle Änderungen durchgeführt worden, ist die Konfiguration der CA damit vollständig abgeschlossen.
\begin{lstlisting}
cp vars.example vars
vim vars
# Konfiguration der CA anpassen:
\end{lstlisting}
\section{Initialisierung der CA} \section{Initialisierung der CA}
Als nächstes muss die Verzeichnisstruktur der CA initialisiert werden und das Wurzelzertifikat erzeugt werden.
\begin{lstlisting} \begin{lstlisting}
# Verzeichnisstruktur erzeugen (löscht bereits existierende Struktur!) # Verzeichnisstruktur initialisieren
./easyrsa init-pki ./easyrsa init-pki
# CA-Zertifikat erzeugen, Passwort für privaten Schlüssel wird verlangt # CA-Zertifikat erzeugen
./easyrsa build-ca ./easyrsa build-ca
\end{lstlisting} \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} \section{Bereitstellung der CA-Konfiguration für Benutzer}
Die Datei \texttt{vars} wird benötigt. Damit Benutzer korrekte Zertifikatsanträge erzeugen können, muss ihnen die Datei \texttt{vars} zur Verfügung gestellt werden.
Zusätzlich wäre es für einige Benutzer ggf. hilfreich, die Windows- und Unix-Version konfiguriert zum Download anzubieten. 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. 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.
In dem Zug kann man auch gleich ein vorkonfiguriertes Paket mit EasyRSA bereitstellen. \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} \chapter{Beantragen von Clientzertifikaten}