https-portalでお手軽https化
概要
https://github.com/SteveLTN/https-portal
https-portal は簡単に https サーバーを用意できるツールです。docker-compose に service を定義するだけで、Nginx と Let’s Encrypt を使った https サーバーを立てることができます。
localhost の https 化
まずは localhost を https 化してみます。検証のために python でサーバーを立てます。
docker-compose.yml
version: "3.9"
services:
https:
image: steveltn/https-portal:1
ports:
- "80:80"
- "443:443"
environment:
DOMAINS: localhost -> http://python:8000
STAGE: local
python:
image: python:alpine
command: python -m http.server
working_dir: /
これだけで python で立てたサーバーを https 化できました。
https://localhost
にアクセスすると確認できます。ただし、自己署名証明書なので警告は出ます。
公開中の web サイトを https 化
次に公開中の web サイトを https 化してみます。と言っても localhost を https 化した時とだいたい同じで、環境変数を少し書き換えるだけです。なお、Let’s Encrypt’s から test 用の証明書を発行するので時間がかかります。
docker-compose.yml
environment:
DOMAINS: YOUR_DOMAIN -> http://python:8000
STAGE: staging
staging で動作確認が出来たら production に変更します。これでブラウザで警告が表示されなくなり、公開中のサイトを https 化できました。
注意点
いきなり STAGE を production で動作確認をしていると、Let’s Encrypt’s のレート制限に引っかかってしまうことがあるらしいです。