vars Datei • Dominik's Blog https://dominikkleidt.de Ein IT Blog für alle Tue, 05 Mar 2024 17:40:38 +0000 de hourly 1 https://wordpress.org/?v=6.6.2 Einfache Zertifikatserstellung mit Easy-RSA: Ein Guide mit eigener Certificate Authority (CA) https://dominikkleidt.de/2024/03/13/einfache-zertifikatserstellung-mit-easy-rsa-ein-guide-mit-eigener-certificate-authority-ca/ https://dominikkleidt.de/2024/03/13/einfache-zertifikatserstellung-mit-easy-rsa-ein-guide-mit-eigener-certificate-authority-ca/#respond Wed, 13 Mar 2024 11:43:00 +0000 https://dominikkleidt.de/?p=533 Grund für den Beitrag Zertifikate sind wichtig und bei mir auf der Arbeit gab es zum Einarbeiten die Aufgabe eine eigene Certificate Authority (CA) aufzustellen und mit dieser gültige Zertifikate zu erstellen.Da das Thema eher ungerne behandelt wird, möchte ich... Weiterlesen →

The post Einfache Zertifikatserstellung mit Easy-RSA: Ein Guide mit eigener Certificate Authority (CA) first appeared on Dominik's Blog.

]]>
Grund für den Beitrag

Zertifikate sind wichtig und bei mir auf der Arbeit gab es zum Einarbeiten die Aufgabe eine eigene Certificate Authority (CA) aufzustellen und mit dieser gültige Zertifikate zu erstellen.
Da das Thema eher ungerne behandelt wird, möchte ich zeigen wie einfach es sein kann: mit easy-rsa.

Ebenfalls soll dies eine Art Dokumentation zum Nachlesen für alle werden.

Der Grund für Easy-RSA statt OpenSSL

Falls dir OpenSSL nichts sagt, es handelt sich um eine Anwendung mit der man Zertifikate signieren kann.
Besser gesagt kann man auch mit dem Packet OpenSSL seine eigene Certificate authority (CA) aufbauen.
Für mich funktioniert OpenSSL bisher nur um selbst signierte Zertifikate erstellen, daher habe ich nach Alternativen gesucht.
Hier die Anmerkung: Falls jemand mir zeigen kann, wie es am praktischen Beispiel funktioniert, gerne Bescheid geben.

Jedenfalls ist mir bei der Recherche Easy-RSA aufgefallen.
Es sah für mich persönlich etwas einfacher aus, als OpenSSL und daher habe ich dem einen Versuch gegeben.
Und siehe da: es funktioniert. Das habe ich bereits vor einigen Jahren festgestellt, jedoch habe ich selten den Bedarf nach einer eigenen CA, weshalb ich dies bisher nicht niedergeschrieben habe.
Dies ändert sich mit diesem Beitrag.
Kleine Anmerkung statt Certificate authority (CA) kann auch Public Key Infrastructure (PKI) als Begriff verwendet werden.
Da in unserem Fall beides dasselbe ist.

Kleine Auffrischung zu Certificate Authority (CA) und RSA

RSA (Rivest–Shamir–Adleman) ist ein Verfahren der Asynchronen Verschlüsslung.
Hier wird pro Seite ein public und private Key erstellt.
Der private Key ist, wie der Name es schon verrät, privat und ist nur dir selbst bekannt.
Mit diesem kannst du eine digitale Signatur erstellen, welchen durch deinen public Key verifiziert werden kann.

Und Zertifikate bauen genau darauf auf.
Denn das Zertifikat, dass du einsehen kannst, enthält den public Key, welchen du an die ausstellenden Certificate authority senden kannst, mit der Frage ob das Certificate wirklich von ihr ausgestellt wurde.
Die CA kann dann für sich mit ihrem private Key prüfen ob dieses Zertifikat tatsächlich von Ihr signiert wurde, wenn nein, wird das Zertifikat als falsch/nicht sicher eingestuft.

Einrichtung von Easy-RSA

Du benötigst eine Linux Maschine, dabei werde ich auf eine Debian 12 Maschine zurückgreifen, es sollte jedoch grundsätzlich auch mit anderen Distributionen funktionieren.
Ebenfalls solltest du auch Sicherheitsgründen mit einem non-root User arbeiten der sudo-Rechte besitzt.

Installation von Easy-RSA

Es wird mittels SSH oder direkt auf dem Server in der Konsole als non-root angemeldet.
Um sicher zu gehen, dass der Zugriff besteht und die Paketquellen up-to-date sind, verwenden wir den Command:

sudo apt update && upgrade -y

Durch das -y bestätigen wir direkt die Nachfrage ob wir die Paketquellen und installierten Paketen aktualisieren/ersetzen wollen.

Wenn dies erfolgreich verlaufen ist, geht es bereits an die Installation der Software.
Hierfür benötigen wir das easy-rsa Paket, welches wir mit diesem Command laden können:

sudo apt install easy-rsa -y

Auch hier ist -y, dazu gedacht uns eine Abfrage zu ersparen, da wir bewusst easy-rsa installieren wollen.
Solltest du easy-rsa auf eine Maschine installieren die bereits einige Pakete verwendet, prüfe die Abhängikeiten und ob diese miteiandner kolledieren.

Die Software ist nun installiert, jedoch haben wir davon noch keine PKI.
Wir müssen also noch einige Arbeiten erledigen.

Struktur unser Certificate Authority (CA) / Public key infrastructure (PKI)

Wir legen einen Ordner an namens easy-rsa, welchen wir mit einem symbolischen Link versehen werden.
Hierdurch können wir auf die PKI im root Verzeichnis zugreifen ohne root zu sein.
Dennoch gibt es hierdurch Einschränkungen, die jedoch für die Sicherheit der Certificate authority gewollt sind.
Die Commands hierfür lauten:

mkdir ~/easy-rsa
ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Nun könnte jedoch in der Theorie erstmal jeder User auf diesen Link zugreifen, hierzu müssen wir die Berechtigungen ändern.
Diese werden auf Owner Only gesetzt.
Hierzu müssen wir chmod verwenden, tausche User gegen deinen User aus:

chmod 700 /home/User/easy-rsa

Ist dies geschehen, kann in das ~/easy-rsa Verzeichnis mittels des Commands gewechselt werden:

cd ~/easy-rsa

Certificate Authority (CA) / Public key infrastructure PKI initialisieren

Nun kann die PKI „errichtet“ bzw. initialisiert werden.
Hier starten wir das easy-rsa Setup mit dem Parameter init-pki:

./easyrsa init-pki

Ist bis hierhin alles richtig verlaufen, so erhalten wir eine Meldung die uns dies bestätigt mit dem Hinweis was als nächstes zutun ist:

Diese Meldung besagt bei „Notice“, dass wir eine vars Datei anlegen müssen, in der wir die Daten unserer Certificate authority (CA) hinterlegen sollen.
Hierzu kann mit Texteditor nach Wahl gearbeitet werden.
In diesem Beispiel wird „nano“ verwendet.
Hierzu im easy-rsa Verzeichnis lediglich den Command deines Texteditors eingeben mit dem Zusatz des Dateinamens also vars.

nano vars

In der nun geöffneten Datei müssen einige Variablen gesetzt werden.
Dabei beschränken wir uns auf die nötigsten Angaben.
Diese lauten:

set_var EASYRSA_REQ_COUNTRY „Land in der deine Instanz von Easy-RSA betrieben wird“
set_var EASYRSA_REQ_PROVINCE „Die Provinz bzw. das Bundesland in dem diese Betrieben werden“ set_var EASYRSA_REQ_CITY „Die Stadt in der dies Betrieben wird“
set_var EASYRSA_REQ_ORG „Name der Organisation“ set_var EASYRSA_REQ_EMAIL „Mailadresse“ set_var EASYRSA_REQ_OU „Organizationseinheit“ set_var EASYRSA_DIGEST „Hash Methode“

Dabei musst du die Eingaben zwischen den Anführungszeichen auf dich selbst anpassen!
Hier ein Beispiel wie dies aussehen kann:

set_var EASYRSA_REQ_COUNTRY „DE“
set_var EASYRSA_REQ_PROVINCE „Niedersachsen“
set_var EASYRSA_REQ_CITY „Göttingen“
set_var EASYRSA_REQ_ORG „Der Gerät“
set_var EASYRSA_REQ_EMAIL „admin@deineDomain.tld“
set_var EASYRSA_REQ_OU „Marketing“
set_var EASYRSA_DIGEST „sha256“

Wichtig das ist nur ein Beispiel!
In nano kann mit STRG + O und anschließend Enter die Datei gespeichert werden.
Mit STRG + X und anschließend Enter wird die Datei verlassen.

Nun muss die vars Datei noch in das richtige Verzeichnis.
Dieses lautet, ausgehend vom easy-rsa Verzeichgnis /pki.

sudo mv vars /pki

Ist dies ebenfalls erfolgreich verlaufen so kann nun im easy-rsa Verzeichnis die Public Key Infrastructure fertig gestellt werden.
Dies erfolgt mit diesem Command:

./easyrsa build-ca

Nun erscheinen einige Prompts wie „Enter New CA Key Passphrase“ & „Enter PEM pass phrase“ diese sind für die Public Key Infrastructure (PKI) wichtig, da hierdurch unteranderem der private Key erzeugt bzw. abgesichert werden!
Daher sind diese Kennwörter SICHER zu wählen und möglichst SICHER zu verfahren!

Hiernach wird nach dem „Common Name“ gefragt, anders gesagt der FQDN (Fully Qualified Domain Name) deiner Certificate Authority (CA).
Ist dies abgeschlossen liegt dein CA Certifcate in folgenden Pfad bereit:

 /home/deinUser/easy-rsa/pki/ca.crt 

Zertifikate signieren

Um ein Zertifakte zu signieren, muss ein Request File erzeugt werden. Die gängiste Fomat ist CSR (Certificate Signing Request) dieses kann in eine Reqeust Datei umbenannt werden.
Hierzu die CSR Datei am ende in „.req“ umbennen.
Also wird aus:
„deineSignRequest.csr“ –> „deinSignRequest.req“

Ist dies geschehen kann die „.req“ Datei in das „/req“ Verzeichnis von easy-rsa abgelegt werden.
Hierzu diese also in folgende pfad ablegen:
easy-rsa/pki/req

Ist dies gescehen kann im easy-rsa Verzeichnis folgender Command abgegeben werden um das Zertifikat zu signieren.

./easyrsa sign-req server „deinreqfile ohne .req“

Dabei ist es wichtig das du beim ausführen des Commandes „.req“ weglässt, da das Kommando eine .req Datei erwartet.
Sonst würde daraus eine „.req.req“ werden, was in einen Fehler führt.
Ist alles erfolgreich wird dies bestätigt und im pfad „/issued“ befindet sich das nun signierte Zertifikat das du für deine Server verwenden kannst.

Nett to know:
Das „server“ in „./easyrsa sign-req server“ sagt aus welche Art von Zertifikat vergeben soll.
In diesem Fall wird ein Zertifikat für Server Authentifizierung ausgestellt.

Feedback

So kann man unteranderem Zertifikate in der eigenen Umgebung erzeugen mittels easy-rsa.
Falls dir dieser beitrag geholfen hat oder du Verbesserungsvorschläge hast, lass es mich gerne wissen!
Auch ein „Gastbeitrag“ wenn du es anders machst würde mich interesiseren.

The post Einfache Zertifikatserstellung mit Easy-RSA: Ein Guide mit eigener Certificate Authority (CA) first appeared on Dominik's Blog.

]]>
https://dominikkleidt.de/2024/03/13/einfache-zertifikatserstellung-mit-easy-rsa-ein-guide-mit-eigener-certificate-authority-ca/feed/ 0