Que diriez-vous d'avoir votre environnement de développement local accessible via HTTPS sans avertissement SSL ?
En tant que développeur, vous pouvez être amené à travailler sur plusieurs projets, clients et applications web. L'une des conditions préalables au développement d'applications web est de tester les sites web localement sur le navigateur pendant la phase de développement. Il y a de très fortes chances que l'application que vous développez soit sécurisée par un certificat SSL/TLS dans un environnement de production.
D'accord ?
Qu'en est-il si vous devez tester certaines fonctionnalités en utilisant l'API d'un tiers qui exige que l'origine soit https:// ?
Vous pouvez utiliser un certificat auto-signé et il n'y a rien de mal à cela. Mais avez-vous essayé d'accéder à un site implémentant un certificat auto-signé ? Vous obtiendrez toujours un avertissement sur Chrome et d'autres navigateurs.
Voyez-vous le Pas de sécurité badge ?
Ce n'est pas bon, n'est-ce pas ?
La meilleure façon d'avoir un certificat SSL valide sur l'environnement de développement est de gérer sa propre autorité de certification et c'est possible avec mkcert. Une solution facile à mettre en oeuvre qui permet d'avoir un certificat valide sur l'adresse web de développement local suivante.
- exemple.com
- *.example.com
- exemple.test
- localhost
- 127.0.0.1
- ::1
Vous pouvez mettre en œuvre mkcert
sur macOS, Windows, CentOS, Ubuntu et d'autres systèmes d'exploitation basés sur UNIX. L'exemple suivant est tiré d'Ubuntu.
Tout d'abord, installons les outils du service de sécurité du réseau qui a certutil
pour gérer la base de données des certificats.
apt-get update
apt-get install libnss3-tools
Il se peut que vous deviez également vous assurer que brew est installé sur votre serveur. Si ce n'est pas le cas, installez-le en utilisant la commande suivante.
apt-get install linuxbrew-wrapper
et, enfin, installer le mkcert
en utilisant brew
.
brew install mkcert
Notepour l'installer en utilisant brew, vous ne devez pas être root. et il est installé dans <span class="s1">/home/$USER/.linuxbrew/bin/mkcert</span>
Où $USER est le nom d'utilisateur que vous avez utilisé pour l'installation.
Il est maintenant temps d'installer l'autorité de certification locale dans le magasin de confiance du système.
root@geekflare:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert -install
Using the local CA at "/root/.local/share/mkcert" ✨
The local CA is now installed in the system trust store! ⚡️
root@geekflare:~/mkcert#
Ensuite, générez un certificat pour l'environnement de développement. Disons que vous allez avoir votre site web sur example.com et que vous pouvez utiliser la commande suivante pour obtenir le certificat et le fichier clé.
root@geekflare:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert example.com
Using the local CA at "/root/.local/share/mkcert" ✨
Created a new certificate valid for the following names 📜
- "example.com"
The certificate is at "./example.com.pem" and the key at "./example.com-key.pem" ✅
root@geekflare:~/mkcert#
Génial ! Maintenant, j'ai un certificat valide et son fichier clé prêt à être utilisé sur mon Nginx, Apache ou autre. serveurs web.
Prenons l'exemple d'un serveur HTTP Apache. Si ce n'est pas déjà fait, activez le module et la configuration SSL.
root@geekflare:/etc/apache2# a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
systemctl restart apache2
root@geekflare:/etc/apache2#
Comme suggéré, redémarrez Apache.
À ce stade, si vous netstat vous remarquerez qu'Apache a démarré avec le port sécurisé 443.
root@geekflare:/etc/apache2# netstat -anlp |grep 443
tcp6 0 0 :::443 :::* LISTEN 11616/apache2
root@geekflare:/etc/apache2#
Mais nous n'avons pas encore terminé. Il a commencé avec le certificat par défaut (factice) et nous devons le remplacer.
Modifier default-ssl.conf
en utilisant vi
et remplacez ce qui suit par le chemin d'accès où vous avez généré les fichiers de clés et de certificats.
SSLCertificateFile /root/mkcert/example.com.pem
SSLCertificateKeyFile /root/mkcert/example.com-key.pem
Avant de redémarrer Apache, vous devez également manipuler hosts
pour example.com afin qu'il se résolve à votre localhost au lieu d'Internet one. Une fois que vous avez terminé, redémarrez le serveur HTTP Apache et accédez à example.com - vous verrez qu'un certificat de confiance est servi.
Conclusion
Cela peut être pratique pour avoir un certificat de confiance dans l'environnement local. Ce qui précède n'est qu'un exemple pour example.com, mais vous pouvez le faire pour localhost et d'autres. Si vous avez besoin d'un signataire externe pour émettre un certificat, consultez le site suivant comment l'obtenir gratuitement.