De nos jours, l'utilisation de HTTPS devient obligatoire pour tous les sites et applications Web. Mais dans le processus de développement, il y a un problème de tests corrects. Naturellement, Let's Encrypt et d'autres autorités de certification n'émettent pas de certificats pour localhost.
Traditionnellement, il existe deux solutions.
- Certificats auto-signés générés via openssl ou autres. Voici le moyen le plus simple de générer une clé privée et un certificat auto-signé pour localhost:
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")
Mais un tel certificat provoquera des erreurs de confiance dans les navigateurs car il n'y a pas d'autorité de certification correspondante dans le magasin de confiance. - L'astuce consiste à enregistrer un nouveau domaine comme localhost.example.com, qui se résout localement en 127.0.0.1 (dans / etc / hosts), pour obtenir le certificat habituel pour ce domaine. Mais une telle fraude est discutable du point de vue de la sécurité - au moins pour les services publics, une telle résolution est fortement déconseillée en raison d'une éventuelle attaque MiTM avec un changement d'adresse IP hostile. Si nous nous limitons uniquement à la machine locale, cela peut être une option appropriée, bien qu'il existe également des doutes. De plus, un tel certificat peut être révoqué. Dans tous les cas, il existe une option plus simple et plus sûre (voir ci-dessous).
Il s'agit de
mkcert , un utilitaire simple pour générer des certificats approuvés localement avec
sa propre autorité de certification . Il fonctionne sous tous les systèmes d'exploitation et ne nécessite aucune configuration.
Version Linux
Vous devez d'abord installer
certutil
.
sudo apt install libnss3-tools -- sudo yum install nss-tools -- sudo pacman -S nss
alors
brew install mkcert
ou compiler à partir de la source:
go get -u github.com/FiloSottile/mkcert $(go env GOPATH)/bin/mkcert
Version MacOS
brew install mkcert brew install nss
Version Windows
Sous Windows, vous pouvez télécharger les
fichiers binaires collectés ou utiliser l'un des gestionnaires de packages: Chocolatey ou Scoop.
choco install mkcert -- scoop install mkcert
La présence d'une autorité de certification locale est la différence fondamentale la plus importante entre mkcert et openssl et les certificats auto-signés, car lorsque vous exécutez une telle autorité de certification, aucune erreur d'approbation ne se produit localement.
En principe, vous pouvez démarrer et configurer votre propre autorité de certification en utilisant d'autres moyens, mais cela nécessite des connaissances et des compétences non triviales. Tout se fait ici seul, sans touches ni paramètres supplémentaires. Installez simplement le programme - et il crée automatiquement une autorité de certification locale et l’entre dans le stockage de confiance du système et le stockage de confiance de Firefox.
$ 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)!