SSL у локальному середовищі розробки

У часи браузерів, які підтримують лише HTTPS, файлів cookie SameSite та реалістичних умов розробки, важливо працювати локально зі справжніми сертифікатами SSL. Let's Encrypt виконали новаторську роботу тут – за допомогою certbot і Cloudflare можна швидко й легко створювати й оновлювати сертифікати підстановки. Це дозволяє отримати доступ до ваших веб-проектів, зашифрованих на будь-якому пристрої (смартфоні, віртуальній машині, ...) у локальній мережі або через VPN.


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

Тепер ми дозволяємо цьому домену вказувати на його власну локальну IP-адресу (наприклад 192.168.0.2) показати. Для цього створіть такі записи DNS A (важливо: для статусу проксі має бути встановлено значення сірий/тільки DNS бути встановленим):

ТипуНазваЗміст
А@192.168.0.2
А*192.168.0.2

Щоб перевірити сертифікати підстановки, необхідно автоматично встановити записи 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.

Доклавши невеликих початкових зусиль, ви можете створити локальне середовище розробки зі справжніми сертифікатами підстановки, яке не тільки є реалістичним, але й бездоганно працює з сучасними браузерами, API та пристроями. Завдяки перевірці DNS-01 вам не потрібен загальнодоступний сервер або запити сертифікатів вручну – усе автоматизовано, безпечно та надійно.

Назад