Eigene Certificate Authority (CA) mit OpenSSL erstellen

Mit einer eigenen CA kann man sich leicht selber SSL Zertifikate ausstellen.

Inhalt

Certificate Authority (CA) erstellen

Für die CA wird zuerst ein sicherer private key erstellt:

openssl genrsa -aes256 -out ca.key 4096

Da man mit diesem Schlüssel eigene SSL Zertifikate erstellen kann, sollte die Passphrase über 20 Zeichen haben.

Nun wird das Zertifikat generiert:

openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 -addext basicConstraints=critical,CA:TRUE -addext keyUsage='critical,Certificate Sign,CRL Sign' -subj '/CN=server.example.com/O=ACME Corp/OU=Certificate Authority/L=Zurich/ST=ZH/C=CH' -out ca.pem

Alternativ Kann man auch eine openssl Konfigurationsdatei für das root CA Zertifikat anlegen:

ca.cnf

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C =  CH
ST = Zurich
L =  Zurich
O =  ACME Corp
OU = Certificate Authority
CN = server.example.com

[v3_req]
basicConstraints = critical, CA:TRUE
keyUsage = critical, Certificate Sign, CRL Sign

Und dann mit dieser Konfigurationsdatei und dem Schlüssel das Zertifikat erstellen:

openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 -out ca.pem -config ca.cnf

CA Zertifikat auf lokalen Geräten verteilen

Damit die CA auf deinen lokalen Geräten als „Vertrauenswürdig“ eingestuft wird und keine Browser Warnung kommt, musst du diese nun auf all deinen Geräten verteilen.

macOS

Unter macOS verwende die folgende Kommandozeile um das CA-Zertifikat hinzuzufügen:

sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" myCA.pem

Alternativ kann das auch über die Schlüsselbund Verwaltung in SYSTEM Zertifikate importiert werden.

iOS

  • Für iOS mailst du dir das Zertifikat am besten und öffnest das attachment und wählst dann „Profil Speichern“.
  • Gehe dann zu den Einstellungen oben auf „Profil geladen“ und wähle „installieren“.
  • Nun gehe zu Einstellungen -> Allgemein -> Info und scrolle ganz runter zu „Zertifikatsvertrauenseinstellungen“
  • Wähle „VOLLES VERTRAUEN FÜR ROOT ZERTIFIKATE AKTIVIEREN“

Linux

Installiere das Paket ca-certificates:

yum install ca-certificates

Kopiere das Zertifikat nach /etc/pki/ca-trust/source/anchors/ und führe dann update-ca-trust aus:

cp -v ~/certs/myCA.pem  /etc/pki/ca-trust/source/anchors/myCA.crt
update-ca-trust

Windows

  1. Öffne die “Microsoft Management Console” durch drücken der Tastenkombination Windows + R, tippe dann mmc und klicke Öffnen
  2. Gehe zu Datei > Snap-in hinzufügen/entfernen
  3. Klicke auf Zertifikate und hinzufügen
  4. Wähle Computer Konto and klicke Weiter
  5. Wähle Lokaler Computer und klicke Fertig
  6. Klicke OK und gehe zurück zum MMC Fenster
  7. Doppel-klicke Zertifikate (lokaler computer) um die Ansicht zu Erweitern
  8. Wähle Trusted Root Certification Authorities und rechts-klicke auf Zertifikate in der mittleren Kolumne unter “Objekt Typ” und wähle Alle Tasks und dann Importieren
  9. Klicke Weiter dann Wählen. Wechsle im Zertifikats dropdown neben dem Dateinamen das Feld auf Alle Dateien (*.*) und suche die myCA.pem Datei, klicke Öffnen, dann Weiter
  10. Wähle Platziere alle Zertifikate in den folgenden store. “Trusted Root Certification Authorities store” ist der default. Klicke Weiter dann klicke Fertig um den Assistenten zu beenden

SSL Zertifikate aus der CA erstellen

Nun können mit der CA im lokalen Netzwerk „gültige“ SSL Zertifikate erstellt werden.

Private Key und Certificate Signing Request erstllen

Zuerst wird ein neuer Schlüssel und Certificate Signing Request (CSR) eerstellt:

openssl genrsa -out server.example.com.key 2048
openssl req -new -key server.example.com.key -out server.example.com.csr
# vim server.example.com.conf

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = server.example.com

Certificate Signing Request Signieren

Der CSR kann nun mit der CA signiert werden:

openssl req -x509 -in server.example.com.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.example.com.crt -days 365 -sha256 -config server.example.com.conf

Achtung: Apple’s Safari Browser (und wahrscheinlich auch einige andere) akzeptieren nur Zertifikate die maximal 365 Tage gültig sind. Obwohl technisch möglich, ist es deshalb davon abzuraten Server Zertifikate die mehr als 1 Jahr gültig sind auszustellen.

Weitere Infos

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert