Verwendung von schwachen und selbstsignierten SSL-Zertifikaten
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
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.
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.com
sub.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:WindowsSystem32driversetchosts
127.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.
Sie können das Zertifikat über die Zertifikatverwaltung oder die . Certmgr.msc
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
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.
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".
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.com
sub.myexample.com
myexample1.com
localhost
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.com
sub.myexample.com
myexample1.com
localhost
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.