Mkcert: certificats HTTPS valides pour localhost


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.

  1. 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.
  2. 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 # if you use Firefox 

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)! 

Source: https://habr.com/ru/post/fr435476/


All Articles