SSL dans un environnement de développement local

À l'heure des navigateurs HTTPS uniquement, des cookies SameSite et des conditions de développement réalistes, il est important de travailler localement avec de vrais certificats SSL. Let's Encrypt a fait un travail de pionnier ici : avec l'aide de certbot et de Cloudflare , la création et le renouvellement de certificats génériques sont rapides et faciles. Cela vous permet d'accéder à vos projets web cryptés sur n'importe quel appareil (smartphone, VM, ...) du réseau local ou via VPN.


Nous enregistrons d'abord un domaine de développeur auprès de Cloudflare, par exemple vielhuber.dev:

Nous laissons maintenant ce domaine pointer vers sa propre adresse IP locale (par exemple 192.168.0.2) montrer. Pour ce faire, créez les enregistrements DNS A suivants (important : le statut du proxy doit être défini sur gris/DNS uniquement être réglé):

TaperNomContenu
UN@192.168.0.2
UN*192.168.0.2

Pour valider les certificats génériques, il est nécessaire de définir automatiquement les enregistrements TXT. Pour ce faire, nous créons maintenant un jeton API (Profil > Jetons API > Créer un jeton > Modèle : Modifier la zone DNS) et sélectionnons le domaine:

Enfin, nous avons mis en place certbot:

sudo apt install certbot python3-certbot-dns-cloudflare
pip install --upgrade pyOpenSSL cryptography certbot certbot-dns-cloudflare

Nous déposons maintenant le jeton API précédemment généré:

mkdir -p ~/.secrets/certbot
nano ~/.secrets/certbot/cloudflare.ini
dns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN_WITH_EDIT_ZONE_DNS_PERMISSIONS
chmod 600 ~/.secrets/certbot/cloudflare.ini

Enfin, nous demandons un certificat:

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 60 \
  -d '*.vielhuber.dev' -d vielhuber.dev \
  --agree-tos \
  --email david@vielhuber.de \
  --non-interactive

Le renouvellement automatique est également mis en place rapidement. Pour éviter que certbot ne s'exécute automatiquement toutes les 12 heures avec une heure aléatoire, nous désactivons d'abord le script standard et ajoutons le nôtre:

sudo mv /etc/cron.d/certbot /etc/cron.d/certbot.disabled
( crontab -l 2>/dev/null; echo "0 12 * * * certbot renew --quiet" ) | crontab -
certbot renew --dry-run

C'est tout ce qu'il faut : Pour intégrer dans Apache, vous faites référence aux certificats que vous venez de créer dans la configuration Apache dans vos projets (par exemple /etc/apache2/sites-available/project-xy.conf):

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/vielhuber.dev/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/vielhuber.dev/privkey.pem

Après un redémarrage d'Apache (sudo systemctl reload apache2) les certificats sont alors déjà actifs et vous pouvez accéder à vos projets avec https://project-xy.vielhuber.dev.

Avec un petit effort initial, vous pouvez créer un environnement de développement local avec de véritables certificats génériques qui est non seulement réaliste, mais qui fonctionne également de manière transparente avec les navigateurs, les API et les appareils modernes. Grâce à la vérification DNS-01, vous n'avez pas besoin d'un serveur accessible au public ni de demandes de certificat manuelles : tout est automatisé, sécurisé et fiable.

Retour