Vous avez sans doute déjà été confronté à devoir mettre en place du HTTPS en local mais vous avez baissé les bras face à la tâche que cela représente ?
Vous avez sans doute déjà été confronté à devoir mettre en place du HTTPS en local mais vous avez baissé les bras face à la tâche que cela représente ? Et bien maintenant avec mkcert vous allez pouvoir faire ça en littérallement 2 lignes de script.
Une fois que vous avez installé mkcert (que ce soit via le binaire ou via brew), vous pouvez lancer la commande :
mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
Une fois ces fichiers générés, vous allez devoir lancer la commande suivante pour installer les certificats sur votre machine afin que votre navigateur puisse les reconnaître et surtout les considérer comme valides :
mkcert -install
mkcert -install
Et voilà, vous avez vos certificats SSL. Vous pouvez maintenant les utiliser dans votre configuration locale avec apache ou nginx. Les certificats sont valables 10 ans, donc cela laisse largement le temps de terminer votre projet.
Pour ma part j'utilise un reverse proxy nginx qui me permet d'avoir sur un environnement local plusieurs conteneurs docker qui tournent sur les mêmes ports 80 et 443 sans qu'il n'y ait de conflits. Très simple à mettre en place et en plus il gère nativement le HTTP2.
version: '3.5'
services:
nginx_proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./certificates/site.loc.pem:/etc/nginx/certs/site.loc.crt:ro
- ./certificates/site.loc.key:/etc/nginx/certs/site.loc.key:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
nginx_site:
build:
context: .
dockerfile: nginx/Dockerfile
environment:
- VIRTUAL_HOST=${HTTP_HOST}
- CERT_NAME=site.loc
volumes:
- ..:/var/www/html
- ./nginx/config/vhost.nginx:/etc/nginx/conf.d/default.conf:ro
restart: unless-stopped
version: '3.5'
services:
nginx_proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./certificates/site.loc.pem:/etc/nginx/certs/site.loc.crt:ro
- ./certificates/site.loc.key:/etc/nginx/certs/site.loc.key:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
nginx_site:
build:
context: .
dockerfile: nginx/Dockerfile
environment:
- VIRTUAL_HOST=${HTTP_HOST}
- CERT_NAME=site.loc
volumes:
- ..:/var/www/html
- ./nginx/config/vhost.nginx:/etc/nginx/conf.d/default.conf:ro
restart: unless-stopped
Je suis obligé de faire un Dockerfile car par défaut, le port 443 n'est pas exposé.
FROM nginx:1.17-alpine
EXPOSE 80
EXPOSE 443
FROM nginx:1.17-alpine
EXPOSE 80
EXPOSE 443