Site Overlay

Erstellen vertrauenswürdiger selbstsignierter SSL-Zertifikate und lokaler Domänen zum Testen

Verwendung von schwachen und selbstsignierten SSL-Zertifikaten

Erstellen vertrauenswürdiger selbstsignierter SSL-Zertifikate und lokaler Domänen zum Testen | von Albin Issac | Bessere Programmierung

So erstellen Sie vertrauenswürdige selbstsignierte SSL-Zertifikate und lokale Domänen für est

Richten Sie lokale Testdomänen ein und aktivieren Sie ein vertrauenswürdiges, selbstsigniertes Zertifikat für schnelle, lokale Tests

SSL-Zertifikatssymbol mit dem Text "So erstellen Sie vertrauenswürdige, selbstsignierte SSL-Zertifikate und lokale Domänen zum Test"

Meistens haben wir andere Domains als localhost, um Anwendungen lokal zu testen, und wir benötigen auch vertrauenswürdige selbstsignierte SSL-Zertifikate.

Selbstsigniertes Zertifikat

Ein selbstsigniertes Zertifikat ist ein Zertifikat, das von der Person signiert wird, die es erstellt hat, und nicht von einer vertrauenswürdigen Zertifizierungsstelle. Entwicklungsserver können mit selbstsignierten Zertifikaten aktiviert werden, um die Kosten für Zertifikate und auch den Verwaltungsaufwand zu senken.

Standardmäßig löst das selbstsignierte Zertifikat beim Zugriff auf Websites in Browsern einen Zertifikatsvalidierungsfehler aus, ermöglicht es uns jedoch, zu den echten Seiten zu wechseln, indem wir das Risiko akzeptieren. In einigen Fällen helfen uns selbstsignierte Zertifikate nicht, einige Browserfunktionen zu testen, die nur mit gültigem SSL funktionieren, z. B. das Testen von APIs verschiedener Browser, z. B. Geolocation.

Screenshot eines Browsers, der die Warnung "Warning: Potential Security Risk Going Next" anzeigt.

Sehen wir uns nun an, wie Sie schnell lokale Domänen und ein vertrauenswürdiges selbstsigniertes Zertifikat zum Testen in Windows einrichten. Das gleiche kann auf anderen Systemen mit einigen zusätzlichen Schritten verwendet werden.

Lokale Domains

Manchmal benötigen wir verschiedene Domänen, um unsere Anwendung in der Entwicklungsumgebung zu testen. Die DNS-Einrichtung verbraucht mehr Zeit und Kosten. Native Domänen helfen uns, Anwendungen in Entwicklungsumgebungen schnell zu testen.

Ich definiere die folgenden Testdomänen – , , und . myexample.comsub.myexample.com myexample1.com

Bearbeiten Sie die Windows-Datei, klicken Sie auf die . Fügen Sie die folgenden Einträge hinzu, um Testdomänen zuzuordnen, damit die definierten Domänen auf die Anwendung zugreifen können, die auf localhost innerhalb desselben Computers ausgeführt wird. hosts C:WindowsSystem32driversetchosts127.0.0.1

127.0.0.1 myexample.com 
127.0.0.1 sub.myexample.com
127.0.0.1 myexample1.com

Lassen Sie uns nun ein selbstsigniertes Zertifikat über OpenSSL erstellen.

Erstellen eines SSL-Stammzertifikats

Erstellen Sie einen RSA-2048-Schlüssel und speichern Sie ihn in der Datei. rootCA.key

openssl genrsa -des3 -out rootCA.key 2048

Wenn Sie "Passwort für rootCA.key eingeben" erhalten, geben Sie ein Passwort ein und speichern Sie es sicher.

Erstellen Sie ein Stammzertifikat über den generierten Schlüssel.

openssl req -x509 -new -nodes -key rootCA.key -sha256 -Tage 1460 -out rootCA.pem

Ändern Sie die Gültigkeitstage nach Bedarf.

Wenn Sie "Passphrase für rootCA.key eingeben" erhalten, geben Sie das Kennwort ein, das zum Erstellen des root-Schlüssels verwendet wurde.

Geben Sie weitere optionale Informationen ein:

  • Ländername (2-stelliger Code) [AU]: USA
  • Name des Bundeslandes oder der Provinz (vollständiger Name) [Einige Staaten]: MN
  • Ortsname (z.B. Stadt) []: Eagan
  • Name der Organisation (z. B. Firma) [Internet Widgits Pty Ltd]: Technologieforum
  • Name der Organisationseinheit (z. B. Abschnitt) []: Marketing
  • Allgemeiner Name (z. B. Server-FQDN oder IHR Name) []: Lokales Zertifikat
  • E-Mail-Adresse []: [email protected]

Vertrauen Sie dem SSL-Stammzertifikat:

Jetzt ist das Stammzertifikat fertig. Vertrauen wir dem Root-SSL-Zertifikat auf dem lokalen System.

Führen Sie den folgenden Befehl an einer Eingabeaufforderung aus (Ausführung mit erhöhtem Zugriff):

certutil -addstore -f "ROOT" rootCA.pem

Das Stammzertifikat wird jetzt als Teil der vertrauenswürdigen Stammzertifizierungsstellen hinzugefügt.

Eine Eingabeaufforderung, die angibt, dass das Stammzertifikat als Teil von vertrauenswürdigen Stammzertifizierungsstellen hinzugefügt wurde.

Sie können das Zertifikat über die Zertifikatverwaltung oder die . Certmgr.msc

1*qPKX6ScawwZGZ4aDqhv ow

Sogar das Stammzertifikat kann über Browser verwaltet werden: Gehen Sie in Chrome zu Datenschutz und Sicherheit → Einstellungen → Sicherheit → Zertifikate → vertrauenswürdigen Stammzertifizierungsstellen verwalten.

Sie können das Zertifikat importieren/exportieren und entfernen (Zertifikate können nicht entfernt werden, wenn sie wie folgt importiert werden):Certmgr.msc

Chrome-Browsereinstellungen, die eine Liste vertrauenswürdiger Root-Zertifizierungsstellen anzeigen.

Wenn Sie Firefox für lokale Tests verwenden, werden Stammzertifikate im Windows-Zertifikatspeicher ignoriert (Chrome und Edge beziehen sich auf Stammzertifikate im Windows-Zertifikatspeicher). Das selbstsignierte Root-Zertifikat muss separat in Firefox importiert werden.

Optionen→ Wechseln Sie zu Datenschutz und Sicherheit → Sicherheit → Zertifikate→ um die Zertifikate anzuzeigen.

Zeigen Sie den Zertifikatsmanager in Firefox an.

Sie können Zertifikate importieren/exportieren und entfernen. Importieren Sie das Stammzertifizierungsstellenzertifikat, das in den vorherigen Schritten erstellt wurde. Wählen Sie "Dieser Zertifizierungsstelle vertrauen, um Websites zu definieren".

Ein Dialogfenster mit dem Kontrollkästchen "Dieser Zertifizierungsstelle vertrauen, um Websites zu identifizieren", um ein Zertifikat in Firefox herunterzuladen.

Erstellen eines SSL-SAN-Zertifikats mit einem Stammzertifikat

Das Stammzertifikat ist jetzt vertrauenswürdig. Wir geben Ihnen ein SSL-Zertifikat zur Unterstützung unserer lokalen Domains – , , und zum Testen. myexample.comsub.myexample.commyexample1.comlocalhost

Erstellen Sie eine neue OpenSSL-Konfigurationsdatei, damit die Konfigurationsdetails verfügbar sind, wenn das Zertifikat erstellt wird. Server.csr.cnf

[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn[dn

]
C=US
ST=MN
L=Eagan
O=Tech Forum
OU=Marketing
[email protected]
CN = localhost

Erstellen einer Datei mit einer Liste lokaler SAN-Domänen:v3.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names[alt_names]
DNS.1 = myexample.com
DNS.2=sub.myexample.com DNS.3=myexample1.com

DNS.4=localhost

Erstellen Sie einen privaten Schlüssel und eine Zertifikatsignieranforderung (Certificate-Signing Request, CSR) für das localhost-Zertifikat.

openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cnf

Dieser private Schlüssel wird auf gespeichert. Server.key

Lassen Sie uns ein Zertifikat über das Root-SSL-Zertifikat und die zuvor erstellte CSR ausstellen.

openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -Tage 500 -sha256 -extfile v3.ext

Wenn "Passphrase für rootCA eingeben.key" angezeigt wird, geben Sie die Passphrase ein, die beim Generieren des Stammschlüssels verwendet wurde.

Das Ausgabezertifikat wird in einer Datei mit dem Namen gespeichert. server.crt

Aktivieren des SSL-Zertifikats für den lokalen Server

Lassen Sie uns nun das Zertifikat für den lokalen Server aktivieren. Ich werde das Zertifikat mit der Express.js-Anwendung konfigurieren, um die vertrauenswürdige SSL-Kommunikation zu aktivieren.

App.js

var express = require('express')const path = require('path')

const https = require('https');
const fs = require('fs');var app = express ()app.get('/index.html', function (req, res) {res.sendFile('index.html', { root: path.join(__dirname, '.') })})https.createServer({ key: fs.readFileSync('ssl\server.key'), cert: fs.readFileSync('ssl\server.crt')}, app).listen(443, function() {


console.log(



'Example app listening on port 443!
Gehe zu
https://localhost/')})

Nun wird das Zertifikat vom Browser für die Testdomänen , , , und . myexample.comsub.myexample.commyexample1.comlocalhost

Ein Screenshot eines Browsers, der ein Zertifikat-Popup anzeigt, dass die Verbindung sicher ist.
Anzeigen der Zertifikatinformationseinstellungen für localhost.
Klicken Sie auf der Registerkarte Details im Fenster Zertifikat auf die Schaltfläche "Betreff Alternative... " Hervorgehoben. Das Feld unten zeigt unsere Beispiel-DNS-Namen.

Das vertrauenswürdige, selbstsignierte Zertifikat kann für die Entwicklung und erste Tests mit lokalen Domänen verwendet werden. Auf diese Weise können wir vertrauenswürdige lokale Domänen schnell aktivieren, um einige Szenarien zu testen, die ein vertrauenswürdiges SSL-Zertifikat erfordern.