ssl https für Localhost

ssl https für Localhost

Entdecken Sie, wie Sie SSL/HTTPS für Ihren Localhost aktivieren können – Sicherheit und Datenschutz für lokale Entwicklungsumgebungen!

Generieren Sie ein CA-Zertifikat

SSL-Zertifikate werden normalerweise von Drittunternehmen signiert, die als Certificate Authority (CA) bekannt sind. Sie sind vertrauenswürdige Aussteller des Internets und prüfen sorgfältig, ob die Website das tut, was sie tun soll, bevor sie ein Zertifikat ausstellen.

Es gibt jedoch keine Zertifizierungsstelle, die ein Zertifikat für localhost ausstellt, einfach weil niemand localhost besitzt. In unserem Fall signieren wir das Zertifikat genau wie CA.

Der erste Schritt besteht darin, mit den folgenden Befehlen ein Root-CA-Zertifikat zu generieren:
$ mkdir cert
$ cd cert
$ openssl genrsa -out CA.key -des3 2048
Die obigen Befehle generieren einen privaten Schlüssel und fordern eine einfache Passphrase für den Schlüssel an. Der Benutzer gibt die Passphrase ein und gibt sie zur Bestätigung erneut ein.

Als nächstes generieren wir mit dem generierten Schlüssel ein Root-CA-Zertifikat, das in unserem Fall zehn Jahre gültig ist. Die Passphrase für den Schlüssel und die Zertifikatsinformationen werden angefordert. Der Benutzer kann die gewünschten Zertifikatsinformationen eingeben oder als Standard belassen.

Führen Sie den folgenden Befehl aus, um das zu erreichen, was wir oben besprochen haben:
$ openssl req -x509 -sha256 -new -nodes -days 3650 -key CA.key -out CA.pem
Wenn du '.' eingibst, wird das Feld leer gelassen.
Ab sofort haben wir in unserem cert/CA-Ordner zwei Dateien, CA.key und CA.pem.

Generating a certificate

Jetzt haben Sie den CA-Schlüssel und das CA-Zertifikat erstellt. Es ist möglich, SSL-Zertifikate zu signieren, da wir bereits CA erstellt haben.

Als nächstes erstellen Sie im Verzeichnis cert/CA ein neues Verzeichnis, localhost. Erstellen Sie in localhost eine neue Datei, localhost.ext.
$ mkdir localhost
$ cd localhost
$ touch localhost.ext
Die Informationen, die in das signierte SSL-Zertifikat geschrieben werden müssen, sind in dieser localhost.ext-Datei enthalten.

Die Datei wird wie folgt gefüllt:
// localhost.ext

authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1
Beachten Sie, dass das Zertifikat für localhost und auch 127.0.0.1 funktioniert. Sie können entscheiden, der Datei weitere Domänen oder IP-Adressen hinzuzufügen, aber stellen Sie sicher, dass Sie die Datei /etc/hosts so bearbeiten, dass diese Domänen auf den lokalen Computer (127.0.0.1) verweisen.

Als Nächstes generieren Sie einen Schlüssel und verwenden den Schlüssel, um mit dem folgenden Befehl eine CSR (Certificate Signing Request) zu generieren.
$ openssl genrsa -out localhost.key -des3 2048
Der Befehl generiert den privaten Schlüssel localhost, und die Passphrase wird für den Schlüssel angefordert, und der Benutzer wird aufgefordert, sie erneut zu bestätigen.

Als nächstes wird CSR mit dem Schlüssel generiert, und dann wird die oben erstellte Passphrase angefordert. Alle anderen angeforderten Details können als Standard belassen oder nach Bedarf eingegeben werden.

Notieren Sie sich das angeforderte Challenge-Passwort; man kann alles eingeben.

Verwenden Sie den folgenden Befehl, um die CSR zu generieren:
$ openssl req -new -key localhost.key -out localhost.csr
Mit dieser CSR können wir jetzt die CA auffordern, ein Zertifikat wie unten zu signieren. Beachten Sie, dass die Pfade für CA.key- und CA.pem-Dateien davon abhängen, von wo aus der Benutzer Befehle ausführt. In diesem Fall werden die folgenden Befehle von /cert/CA/localhost ausgeführt.
$ openssl x509 -req -in localhost.csr -CA ../CA.pem -CAkey ../CA.key -CAcreateserial -days 3650 -sha256 -extfile localhost.ext -out localhost.crt
Dieser Befehl übernimmt die CSR (localhost.csr), das CA-Zertifikat (CA.pem und CA.key) und die Zertifikaterweiterungsdatei (localhost.ext). Diese Eingaben generieren eine localhost.crt-Zertifikatsdatei, die zehn Jahre gültig ist.

Der Server benötigt die Zertifikatsdatei localhost.crt und den entschlüsselten Schlüssel, da unser localhost.key in verschlüsselter Form vorliegt.

Wir müssen die localhost.key entschlüsseln und diese Datei auch wie folgt speichern:
$ openssl rsa -in localhost.key -out localhost.decrypted.key

Starten des Rails Servers

Vorbereiten der Rails App, sie https fähig machen.
// config/environments/development.rb

config.force_ssl = true
Jetzt können wir den rails Server starten mit Bezug auf die Certifikate nachdem wir den cert Ordner in unserem public gespeichert haben.
$ rails s --early-hints -e development -b 'ssl://0.0.0.0:443?key=public/cert/CA.key&cert=public/cert/CA.pem'
Im Browser können wir die Seite unter https://localhost:443 aufrufen. Die entsprechende Warnmeldung können wir ignorieren und trotz Gefärdungswarnung weiter machen.

Damit nicht ständig der ganze Code eingegeben werden muss, kann man in der .zshrc einen Alias eingeben.
// .zsh

alias b4um="rails s --early-hints -e development -b 'ssl://0.0.0.0:443?key=public/cert/CA.key&cert=public/cert/CA.pem'"
b4um kann durch einen Alias nach wahl verändert werden. Mit diesem Alias kann ich jetzt wie folgt den Server starten:
$ b4um

Meld dich an und schreibe ein Kommentar