Selbstsigniertes Zertifikat erstellen

Selbstsigniertes Zertifikat erstellen für Tests und localhost: X.509 v3 mit SAN, frei wählbarer Laufzeit und optional als Test-CA, als PEM mit privatem Schlüssel.

–

 

FeldWert
Zertifikat (PEM)
Privater Schlüssel (PKCS#8, PEM) – geheim halten
Prüfen und Vergleich mit OpenSSL

Alles läuft in Ihrem Browser, Eingaben werden nicht übertragen. Nur zum Lernen und Testen: Verwenden Sie für echte Geheimnisse und Produktivsysteme geprüfte Werkzeuge Ihrer Organisation.

Wofür ein selbstsigniertes Zertifikat taugt

Ein selbstsigniertes Zertifikat (englisch Self-signed Certificate) ist von demselben Schlüssel unterschrieben, den es enthält: Aussteller und Subject sind identisch. Damit fehlt die Bestätigung durch eine Zertifizierungsstelle, Browser zeigen deshalb eine Warnung. Für die Entwicklung, für interne Tests und für localhost HTTPS ist ein solches Testzertifikat trotzdem die einfachste Lösung, denn viele Browserfunktionen wie Service Worker, sichere Cookies oder die Kamera-Schnittstelle verlangen HTTPS.

Dieses Werkzeug kann ein X.509 Zertifikat erzeugen (Version 3) mit allen Erweiterungen, die moderne Clients erwarten: Basic Constraints, Key Usage, Extended Key Usage für Server und Client, Subject Key Identifier und die alternativen Namen (SAN). Die Zeitangaben stehen in UTC, die Seriennummer ist zufällig. Mit dem Schalter für CA:TRUE entsteht eine kleine Test-CA, mit der Sie zum Beispiel per openssl x509 -req -CA weitere Zertifikate signieren können. Den Inhalt kontrollieren Sie mit openssl x509 -in zertifikat.pem -noout -text oder mit dem Zertifikat-Dekoder.

Grenzen: Ein selbstsigniertes Zertifikat taugt nicht für öffentlich erreichbare Dienste; dafür gibt es kostenlose Zertifikate über ACME, etwa von Let's Encrypt. Für eine dauerhafte lokale Entwicklungsumgebung lohnt sich eine eigene lokale CA, die Sie einmal im System als vertrauenswürdig hinterlegen. Behandeln Sie auch den Schlüssel eines Testzertifikats als Geheimnis und verwenden Sie ihn nicht weiter, sobald die Tests vorbei sind.

Anleitung: Selbstsigniertes Zertifikat erstellen in 5 Schritten

  1. Schlüsseltyp wählen, am einfachsten ECDSA P-256.
  2. Common Name eintragen, zum Beispiel localhost, und unter „Alternative Namen (SAN)“ weitere Namen und IP-Adressen wie 127.0.0.1 ergänzen.
  3. „Laufzeit in Tagen“ festlegen und bei Bedarf „Als Test-CA kennzeichnen (CA:TRUE)“ einschalten.
  4. Zertifikat und privaten Schlüssel herunterladen und in den Webserver oder Entwicklungsserver eintragen.
  5. Mit openssl x509 -in zertifikat.pem -noout -text kontrollieren und das Zertifikat im Testbrowser als vertrauenswürdig hinterlegen.

Typische Anwendungsfälle

  • HTTPS für einen lokalen Entwicklungsserver einrichten, etwa für Service Worker oder sichere Cookies, die nur über HTTPS funktionieren.
  • Einen TLS-Endpunkt in einer Testumgebung oder in automatisierten Tests bereitstellen.
  • Eine kleine Test-CA anlegen, um Clientzertifikate oder Zertifikatsketten auszuprobieren.
  • Zeigen, welche Erweiterungen (Basic Constraints, Key Usage, SAN) ein Zertifikat braucht, damit Browser es annehmen.
Fragen

Häufige Fragen

Wie lange sollte ein Testzertifikat gültig sein?

Für die Entwicklung sind 365 Tage ein guter Wert. Manche Systeme, etwa macOS und iOS, lehnen Server-Zertifikate mit mehr als 825 Tagen Laufzeit ab, selbst wenn Sie ihnen vertrauen.

Warum braucht localhost einen SAN-Eintrag?

Browser vergleichen den Hostnamen nur mit den alternativen Namen. Steht localhost nur im Common Name, meldet Chrome einen Fehler. Tragen Sie zusätzlich 127.0.0.1 und ::1 ein, wenn Sie die Seite über die IP-Adresse aufrufen.

Ist ein selbstsigniertes Zertifikat unsicherer verschlüsselt?

Nein, die Verschlüsselung ist gleich stark. Es fehlt nur die unabhängige Bestätigung, dass der Schlüssel zum Namen gehört. Deshalb muss jeder Client dem Zertifikat ausdrücklich vertrauen.

Kann ich das Zertifikat später verlängern?

Ein Zertifikat lässt sich nicht verlängern, nur neu ausstellen. Erzeugen Sie ein neues mit demselben oder einem neuen Schlüssel und tauschen Sie es auf dem Server aus.

Wie bringe ich den Browser dazu, dem Testzertifikat zu vertrauen?

Importieren Sie die PEM-Datei in den Zertifikatsspeicher des Betriebssystems oder des Browsers als vertrauenswürdige Stammzertifizierungsstelle, nur auf dem Testrechner. Danach den Browser neu starten.

Warum meldet curl trotzdem einen Zertifikatsfehler?

curl nutzt einen eigenen CA-Speicher. Geben Sie das Zertifikat mit curl --cacert zertifikat.pem https://localhost/ an, statt die Prüfung mit -k abzuschalten.

Weitere Werkzeuge

Das könnte auch helfen

Alle 558 Werkzeuge