\section{Aufbau einer CA für den VPN-Dienst} \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} 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 OpenSSL setzt eine Konfigurationsdatei voraus - unter Windows fehlt diese gegebenenfalls. 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} 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} # Aktuelles 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 \end{lstlisting} \section{Initialisierung der CA} \begin{lstlisting} cp vars.example vars vim vars # Konfiguration der CA anpassen: # * Standardgültigkeit für ausgestellte Zertifikate # * Name der CA, etc # Verzeichnisstruktur erzeugen (löscht bereits existierende Struktur!) ./easyrsa init-pki # CA-Zertifikat erzeugen, Passwort für privaten Schlüssel wird verlangt ./easyrsa build-ca # Regelbetrieb der CA # Benutzer erzeugt Request # z.B. mit openssl req -utf8 -new -newkey rsa:4096 -keyout /tmp/cert.key -out /tmp/cert.req -subj "/CN=foobar" [-nodes] ? # Request importieren (erfordert einen eindeutigen Namen - hier "timmeja") ./easyrsa import-req /tmp/EasyRSA-3.0.4/pki/reqs/jpt-client.req timmeja # Request signieren mit Client-Rolle (erfordert Passwort für privaten Schlüssel der CA) ./easyrsa sign-req client timmeja # Zertifikat inspizieren und an Antragsteller übergeben openssl x509 -in pki/issued/timmeja.crt -noout -text # CRL erzeugen und an OpenVPN-Server übergeben ./easyrsa gen-crl \end{lstlisting} \textbf{Achtung:} Wenn die CRL ausgelaufen ist, muss sie neu generiert werden. Das kann den VPN-Server im Betrieb blockieren. 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. In der Serverkonfiguration: \texttt{verify-crl /path/to/crl.pem}