Improve CA documentation
This commit is contained in:
parent
66875d2fc7
commit
13efbf62d1
|
@ -1,7 +1,7 @@
|
||||||
\chapter{Vorwort}
|
\chapter{Vorwort}
|
||||||
Dieses Dokument wurde im Rahmen der Masterarbeit \enquote{Konzeption und Umsetzung eines IPv6-VPN für die Abteilung Informatik} erstellt.
|
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.
|
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.
|
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.
|
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}
|
\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.
|
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.
|
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.
|
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}
|
\begin{lstlisting}
|
||||||
# Aktuelles Release v3.0.4 beschaffen
|
# Aktuelles Release v3.0.4 beschaffen
|
||||||
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/ \
|
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/ \
|
||||||
|
@ -46,56 +60,69 @@ cp vars.example vars
|
||||||
vim vars
|
vim vars
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
In der Konfigurationsdatei werden folgende Einstellungen auskommentiert und angepasst:
|
In der so erzeugten Konfigurationsdatei werden nun die folgenden Einträge auskommentiert und entsprechend angepasst.
|
||||||
\begin{lstlisting}
|
|
||||||
# Die volle Organisationsstruktur in Zertifikate aufnehmen
|
|
||||||
set_var EASYRSA_DN "org"
|
|
||||||
|
|
||||||
# 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_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"
|
||||||
set_var EASYRSA_REQ_ORG "Hochschule Hannover"
|
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"
|
||||||
|
\end{lstlisting}
|
||||||
# Alle Zertifikate sollen den RSA-Algorithmus mit 4096 Bit Schlüssellänge verwenden
|
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_KEY_SIZE 4096
|
||||||
set_var EASYRSA_ALGO rsa
|
set_var EASYRSA_ALGO rsa
|
||||||
|
\end{lstlisting}
|
||||||
# Das Wurzelzertifikat soll etwa 10 Jahre gültig sein
|
Das Wurzelzertifikat der CA soll für 10 Jahre gültig sein.
|
||||||
|
\begin{lstlisting}
|
||||||
set_var EASYRSA_CA_EXPIRE 3650
|
set_var EASYRSA_CA_EXPIRE 3650
|
||||||
|
\end{lstlisting}
|
||||||
# Ausgestellte Zertifikate sollen etwa ein halbes Jahr gültig sein
|
Ausgestellte Zertifikate sollen ein halbes Jahr lang gültig sein.
|
||||||
|
\begin{lstlisting}
|
||||||
set_var EASYRSA_CERT_EXPIRE 180
|
set_var EASYRSA_CERT_EXPIRE 180
|
||||||
|
\end{lstlisting}
|
||||||
# Eine erzeugte CRL soll etwa ein halbes Jahr gültig sein
|
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
|
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.
|
|
||||||
TODO: Erklärung der Parameter.
|
Mit der Durchführung der aufgeführten Änderungen ist die Konfiguration der CA abgeschlossen.
|
||||||
CRL - Certificate Revocation List
|
|
||||||
|
|
||||||
\section{Initialisierung der CA}
|
\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}
|
\begin{lstlisting}
|
||||||
# Verzeichnisstruktur initialisieren
|
|
||||||
./easyrsa init-pki
|
./easyrsa init-pki
|
||||||
|
\end{lstlisting}
|
||||||
# CA-Zertifikat erzeugen
|
Im Anschluss kann das Wurzelzertifikat der CA erzeugt werden.
|
||||||
|
\begin{lstlisting}
|
||||||
|
# ./easyrsa build-ca nopass
|
||||||
./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.
|
|
||||||
|
\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.
|
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}
|
\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.
|
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.
|
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}
|
\begin{lstlisting}
|
||||||
# Aktuelles Release v3.0.4 beschaffen
|
# Aktuelles Release v3.0.4 beschaffen
|
||||||
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/ \
|
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
|
gpg --verify EasyRSA-3.0.4.zip.sig EasyRSA-3.0.4.zip
|
||||||
\end{lstlisting}
|
\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}
|
\begin{lstlisting}
|
||||||
# Temporäres Verzeichnis erzeugen
|
# Temporäres Verzeichnis erzeugen
|
||||||
TD=`mktemp -d`
|
TD=`mktemp -d`
|
||||||
|
@ -129,9 +156,10 @@ zip -r VPN-EasyRSA.zip EasyRSA-3.0.4
|
||||||
cd -
|
cd -
|
||||||
cp $TD/VPN-EasyRSA.zip .
|
cp $TD/VPN-EasyRSA.zip .
|
||||||
|
|
||||||
# Temporäres Verzeichnis löschen
|
# Temporäres Verzeichnis entfernen
|
||||||
rm -rf $TD
|
rm -rf $TD
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
Anschließend kann das angefertigte \texttt{*.zip}-Archiv den Benutzern zur Verfügung gestellt werden.
|
||||||
|
|
||||||
|
|
||||||
\chapter{Beantragen von Zertifikaten}
|
\chapter{Beantragen von Zertifikaten}
|
||||||
|
|
Loading…
Reference in New Issue