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
- Öffne die “Microsoft Management Console” durch drücken der Tastenkombination Windows + R, tippe dann
mmc
und klicke Öffnen - Gehe zu Datei > Snap-in hinzufügen/entfernen
- Klicke auf Zertifikate und hinzufügen
- Wähle Computer Konto and klicke Weiter
- Wähle Lokaler Computer und klicke Fertig
- Klicke OK und gehe zurück zum MMC Fenster
- Doppel-klicke Zertifikate (lokaler computer) um die Ansicht zu Erweitern
- 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
- 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 - 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
- Create Your Own SSL Certificate Authority for Local HTTPS Development
- Create your own Certificate Authority (CA) using OpenSSL
- OpenSSL x509v3_config
- How to add X.509 extensions to certificate OpenSSL
- Configuring LDAP over SSL (LDAPS) on a Samba AD DC
- Samba Security Documentation
- How to self sign or certify a (CSR) with SAN X.509 V3 extension
- Is there anyway to specify basicConstraints for openssl cert via command line