SSL in lokale ontwikkelomgeving

In een tijd waarin browsers alleen HTTPS ondersteunen, SameSite-cookies worden gebruikt en de ontwikkelingsomstandigheden realistisch zijn, is het belangrijk om lokaal te werken met echte SSL-certificaten. Let's Encrypt heeft hier baanbrekend werk verricht: met behulp van certbot en Cloudflare is het aanmaken en vernieuwen van wildcardcertificaten snel en eenvoudig. Hiermee kunt u op elk apparaat (smartphone, VM, ...) in het lokale netwerk of via VPN versleuteld toegang krijgen tot uw webprojecten.


We registreren eerst een ontwikkelaarsdomein bij Cloudflare, bijvoorbeeld vielhuber.dev:

We laten dit domein nu naar zijn eigen lokale IP-adres verwijzen (bijvoorbeeld 192.168.0.2) show. Om dit te doen, moet u de volgende DNS A-records aanmaken (belangrijk: de proxystatus moet zijn ingesteld op grijs/alleen DNS worden ingesteld):

TypeNaamInhoud
A@192.168.0.2
A*192.168.0.2

Om de wildcard-certificaten te valideren, is het noodzakelijk om automatisch TXT-records in te stellen. Om dit te doen, maken we nu een API-token aan (Profiel > API-tokens > Token maken > Sjabloon: Zone-DNS bewerken) en selecteren we het domein:

Ten slotte hebben we certbot opgezet:

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

Nu storten we het eerder gegenereerde API-token:

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

Ten slotte vragen wij een certificaat aan:

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

Ook automatische verlenging is snel geregeld. Om te voorkomen dat certbot automatisch elke 12 uur op een willekeurige tijd draait, deactiveren we eerst het standaardscript en voegen we ons eigen script toe:

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

Dit is alles wat nodig is: Om te integreren in Apache, verwijst u naar de certificaten die u zojuist hebt gemaakt in de Apache-configuratie in uw projecten (bijv. /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

Na een herstart van Apache (sudo systemctl reload apache2) De certificaten zijn dan al actief en u heeft toegang tot uw projecten met https://project-xy.vielhuber.dev.

Met een kleine initiële inspanning kunt u een lokale ontwikkelomgeving bouwen met echte wildcardcertificaten die niet alleen realistisch is, maar ook naadloos werkt met moderne browsers, API's en apparaten. Dankzij DNS-01-verificatie hebt u geen openbaar toegankelijke server of handmatige certificaataanvragen nodig: alles is geautomatiseerd, veilig en betrouwbaar.

Terug