Heutzutage wird die Verwendung von HTTPS für alle Websites und Webanwendungen obligatorisch. Im Entwicklungsprozess gibt es jedoch ein Problem mit korrekten Tests. Natürlich stellen Let's Encrypt und andere Zertifizierungsstellen keine Zertifikate für localhost aus.
Traditionell gibt es zwei Lösungen.
- Selbstsignierte Zertifikate, die über openssl oder andere generiert wurden. Hier ist der einfachste Weg, einen privaten Schlüssel und ein selbstsigniertes Zertifikat für localhost zu generieren:
openssl req -x509 -out localhost.crt -keyout localhost.key \ -newkey rsa:2048 -nodes -sha256 \ -subj '/CN=localhost' -extensions EXT -config <( \ printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
Ein solches Zertifikat führt jedoch zu Vertrauensfehlern in Browsern, da im vertrauenswürdigen Speicher keine entsprechende Zertifizierungsstelle vorhanden ist. - Der Trick besteht darin, eine neue Domain wie localhost.example.com zu registrieren, die lokal in 127.0.0.1 (in / etc / hosts) aufgelöst wird, um das übliche Zertifikat für diese Domain zu erhalten. Ein solcher Betrug ist jedoch aus Sicherheitsgründen fraglich - zumindest für öffentliche Dienste wird eine solche Lösung aufgrund eines möglichen MiTM-Angriffs mit einer Änderung einer feindlichen IP-Adresse nicht empfohlen . Wenn wir uns nur auf den lokalen Computer beschränken, ist dies möglicherweise eine geeignete Option, obwohl auch einige Zweifel bestehen. Darüber hinaus kann ein solches Zertifikat widerrufen werden. In jedem Fall gibt es eine einfachere und sicherere Option (siehe unten).
Dies ist
mkcert , ein einfaches Dienstprogramm zum Generieren lokal vertrauenswürdiger Zertifikate mit
eigener Zertifizierungsstelle . Es funktioniert unter allen Betriebssystemen und erfordert keine Konfiguration.
Linux-Version
Zuerst müssen Sie
certutil
installieren.
sudo apt install libnss3-tools -- sudo yum install nss-tools -- sudo pacman -S nss
dann
brew install mkcert
oder aus der Quelle kompilieren:
go get -u github.com/FiloSottile/mkcert $(go env GOPATH)/bin/mkcert
MacOS-Version
brew install mkcert brew install nss
Windows-Version
Unter Windows können Sie die
gesammelten Binärdateien herunterladen oder einen der Paketmanager verwenden: Chocolatey oder Scoop.
choco install mkcert -- scoop install mkcert
Das Vorhandensein einer lokalen Zertifizierungsstelle ist der wichtigste grundlegende Unterschied zwischen mkcert- und openssl-Zertifikaten und selbstsignierten Zertifikaten, da beim Ausführen einer solchen Zertifizierungsstelle lokal keine Vertrauensfehler auftreten.
Grundsätzlich können Sie Ihre eigene Zertifizierungsstelle auf andere Weise starten und konfigurieren. Dies erfordert jedoch nicht triviale Kenntnisse und Fähigkeiten. Hier wird alles von selbst erledigt, ohne zusätzliche Schlüssel und Einstellungen. Installieren Sie einfach das Programm - und es erstellt automatisch eine lokale Zertifizierungsstelle und gibt es in den vertrauenswürdigen Speicher des Systems und in den vertrauenswürdigen Firefox-Speicher ein.
$ mkcert -install Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" The local CA is now installed in the system trust store! ️ The local CA is now installed in the Firefox trust store (requires restart)!