Übersetzungen dieser Seite:
  • de

< Development

HTTPS SSL-Zertifikat und eine eigene Zertifizierungsstelle

Certification Authority anlegen

  • Verzeichnis anlegen für das Zertifikat und weitere Dateien:
root@linux# mkdir /root/ca
root@linux# cd /root/ca
  • Gültigkeit: 10 Jahre
  • Geheimer Schlüssel: cakey.pem
  • CA-Zertifikat: cacert.pem
  • Länge: 2048 Bit:
  • Wichtig: Hier ein gutes Passwort verwenden
root@linux# openssl req -new -x509 -newkey rsa:2048 -keyout cakey.pem -out cacert.pem -days 3650

Es sind nun die Dateien cacert.pem und cakey.pem vorhanden.

  • Rechte nur für root setzen:
root@linux# chmod 600 cakey.pem

* Testen, ob Schlüssel mit Password geöffnet werden kann:

root@linux# openssl rsa -in cakey.pem -noout -text

Schlüssel für das Serverzertifikat erzeugen

  • Eigene CA ist nun angelegt
  • Sclüssel erzeugen
    • Länge: 2048 Bit
    • RSA Schlüssel
    • Verschlüsselung mit AES 128
    • Passphrase ist egal, darf aber nicht leer sein
root@linux# openssl genrsa -out serverkey.pem -aes128 2048 -days 3650
  • Passphrase wieder entfernen, damit Webserver den Schlüssel selbst lesen kann:
root@linux# openssl rsa -in serverkey.pem -out serverkey.pem

Certificate Signing Request erzeugen

  • Certificate Signing Request: CSR
  • Allgemeine Daten können wie oben sein:
  • Common Name ist wichtig! Hier muss der DNS-Name stehen, unter dem der Client den Server anspricht
    Z.B. raspberrypi.wernerhome.local
  • _challenge password_ kann lee bleiben
root@linux#  openssl req -new -key serverkey.pem -out req.pem -nodes

Mittlerweile sind vier Dateien im Verzeichnis:

root@linux# ls
cacert.pem cakey.pem req.pem serverkey.pem

OpenSSL-Konfiguration anpassen

  • Datei /etc/ssl/openssl.cnf ändern
  • In der Sektion [ CA_default ] anpassen:
dir             = .              # Where everything is kept
new_certs_dir   = $dir           # default place for new certs
private_key     = $dir/cakey.pem # The private key
RANDFILE        = $dir/.rand     # private random number file
default_days    = 3650           # how long to certify for
  • Noch zwei Dateien anlegen:
root@linux# echo 01 > serial
root@linux# touch index.txt

Serverzertifikat signieren

  • Unsere CA signiert nun das Zertifikat:
  • Dabei das geheime Password für /cakey.pem s.o. eingeben:
root@linux# openssl ca -in req.pem -notext -out servercert.pem

Einbinden der root CA in die Zertifizierungsstelle des Browsers

  • Firefox: cacert.pem importieren
    • Einstellungen → Erweitert → Zertifikate
    • → Zertifikate anzeigen → Zertifizierungsstellen
  • Chrome/Chromium:
    • Einstellungen → Erweitert
    • → Zertifikate verwalten / HTTPS/SSL-Zertifikate und -Einstellungen verwalten
    • → Zertifizierungsstellen

Übersicht openssl Kommandos

Kommando Erläuterung
req creates and processes certificate requests in PKCS#10 format
Create self signed certificates for use as root CAs
rsa processes / convert RSA keys
genrsa generates an RSA private key
ca minimal CA application. Sign certificate requests
generate CRLs
maintains a text database of issued certificates / statuses