SSL w lokalnym środowisku programistycznym

W dobie przeglądarek obsługujących wyłącznie protokół HTTPS, plików cookie SameSite i realistycznych warunków rozwoju oprogramowania, ważne jest, aby pracować lokalnie z prawdziwymi certyfikatami SSL. Let's Encrypt wykonało pionierską pracę w tym zakresie – dzięki pomocy certbot i Cloudflare tworzenie i odnawianie certyfikatów typu wildcard jest szybkie i łatwe. Dzięki temu możesz uzyskać dostęp do swoich projektów internetowych w postaci zaszyfrowanej na dowolnym urządzeniu (smartfonie, maszynie wirtualnej itp.) w sieci lokalnej lub za pośrednictwem VPN.


Najpierw rejestrujemy domenę deweloperską w Cloudflare, na przykład vielhuber.dev:

Teraz pozwólmy tej domenie wskazywać na jej własny lokalny adres IP (na przykład 192.168.0.2) pokazywać. Aby to zrobić, utwórz następujące rekordy DNS A (ważne: status serwera proxy musi być ustawiony na szary/tylko DNS być ustawionym):

TypNazwaZawartość
A@192.168.0.2
A*192.168.0.2

Aby zweryfikować certyfikaty wieloznaczne, konieczne jest automatyczne ustawienie rekordów TXT. Aby to zrobić, utwórzmy teraz token API (Profil > Tokeny API > Utwórz token > Szablon: Edytuj strefę DNS) i wybierzmy domenę:

Na koniec skonfigurowaliśmy certbota:

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

Teraz wpłacamy wcześniej wygenerowany token API:

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

Na koniec prosimy o certyfikat:

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

Automatyczne odnawianie można również skonfigurować szybko. Aby zapobiec automatycznemu uruchamianiu się certbota co 12 godzin w losowym czasie, najpierw dezaktywujemy standardowy skrypt i dodajemy własny:

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

To wszystko, co jest potrzebne: aby zintegrować się z Apache, należy odwołać się do certyfikatów, które właśnie utworzyłeś w konfiguracji Apache w swoich projektach (np. /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

Po ponownym uruchomieniu Apache'a (sudo systemctl reload apache2) certyfikaty będą już aktywne i będziesz mieć dostęp do swoich projektów za pomocą https://project-xy.vielhuber.dev.

Wkładając w to odrobinę wysiłku na początku, możesz stworzyć lokalne środowisko programistyczne z prawdziwymi certyfikatami wieloznacznymi, które nie tylko będzie realistyczne, ale także będzie bezproblemowo współpracować z nowoczesnymi przeglądarkami, interfejsami API i urządzeniami. Dzięki weryfikacji DNS-01 nie potrzebujesz publicznie dostępnego serwera ani ręcznych żądań certyfikatów – wszystko jest zautomatyzowane, bezpieczne i niezawodne.

Plecy