SSL в локальной среде разработки

Во времена браузеров, поддерживающих только HTTPS, файлов cookie SameSite и реалистичных условий разработки важно работать локально с настоящими SSL-сертификатами. Let's Encrypt проделал в этом отношении новаторскую работу: с помощью certbot и Cloudflare создание и продление сертификатов wildcard стало быстрым и простым. Это позволяет вам получать зашифрованный доступ к вашим веб-проектам на любом устройстве (смартфоне, виртуальной машине, ...) в локальной сети или через VPN.


Сначала мы регистрируем домен разработчика в Cloudflare, например vielhuber.dev:

Теперь мы позволяем этому домену указывать на его собственный локальный IP-адрес (например, 192.168.0.2) показывать. Для этого создайте следующие записи DNS A (важно: статус прокси должен быть установлен на серый/только DNS быть установлено):

ТипИмяСодержание
А@192.168.0.2
А*192.168.0.2

Для проверки сертификатов wildcard необходимо автоматически устанавливать записи TXT. Для этого теперь создаем API-токен (Профиль > API-токены > Создать токен > Шаблон: Изменить зону DNS) и выбираем домен:

Наконец, мы настроили certbot:

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

Теперь мы депонируем ранее сгенерированный 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

Наконец, мы запрашиваем сертификат:

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

Автоматическое продление также настраивается быстро. Чтобы предотвратить автоматический запуск certbot каждые 12 часов в случайное время, мы сначала деактивируем стандартный скрипт и добавим свой собственный:

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

Это все, что нужно: для интеграции в Apache вы ссылаетесь на сертификаты, которые вы только что создали в конфигурации Apache в своих проектах (например, /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

После перезапуска Apache (sudo systemctl reload apache2) сертификаты уже активны, и вы можете получить доступ к своим проектам с помощью https://project-xy.vielhuber.dev.

Приложив немного усилий, вы сможете создать локальную среду разработки с настоящими wildcard-сертификатами, которая не только реалистична, но и без проблем работает с современными браузерами, API и устройствами. Благодаря проверке DNS-01 вам не нужен общедоступный сервер или ручные запросы сертификатов — все автоматизировано, безопасно и надежно.

Назад