HTTPS開発テストまとめ(mkcert / ngrok|LAN / WAN)

HTTPS開発テストまとめ(mkcert / ngrok|LAN / WAN)

HTTPS開発テストまとめ(mkcert / ngrok|LAN / WAN)

対象:Flask 等のWebアプリを HTTPS前提 で社内(LAN)・社外(WAN)からテストしたい開発者向け。 本資料は「読めばそのまま実行できる」ことを目的とする。

1. なぜ開発でもHTTPSが必須なのか

  • ブラウザAPI(位置情報、加速度、カメラ等)が HTTPS必須 になりがち
  • Cookie の Secure / SameSite 制御
  • 外部API・Webhook連携はHTTPS前提がほぼ100%
  • 本番との差分を無くす(HTTP→HTTPSで後から壊れるのを防ぐ)

2. 結論(最短の選択)

  • 社内LANでHTTPSテストmkcert
  • 社外WANからHTTPSテストngrok
  • スマホ・第三者も含む → ngrok(mkcertはCA配布が必要)

3. 構成イメージ

LAN(社内):mkcert

[開発PC]  https://192.168.0.105:5000
   Flask + mkcert証明書
        ↑
[社内PC / スマホ]
  ※ ルートCAを信頼した端末のみ「警告なし」
  

WAN(社外):ngrok

[開発PC]  http://127.0.0.1:5000  (ローカルはHTTPでもOK)
        ↑
     ngrok http 5000
        ↓
[社外端末] https://xxxx.ngrok-free.app  (公開HTTPS)
  

4. mkcertとは(LAN向け)

  • ローカル専用の 認証局(ルートCA) を作成
  • そのCAで IP / ホスト名用の証明書を即時発行
  • CAを信頼した端末では 警告なしHTTPS

mkcertは社内検証用。本番・社外公開には使わない。

5. mkcert セットアップ(Ubuntu)

5-1. 依存パッケージ

sudo apt update
sudo apt install -y libnss3-tools ca-certificates curl
  

5-2. mkcert インストール(公式バイナリ)

curl -L -o mkcert https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-v1.4.4-linux-amd64
chmod +x mkcert
sudo mv mkcert /usr/local/bin/
mkcert --version
  

5-3. ローカルCA作成

mkcert -install
mkcert -CAROOT
  

5-4. 証明書発行(IP必須)

mkdir cert
cd cert
mkcert 192.168.0.105 localhost 127.0.0.1
  

IPでアクセスするなら、必ずIPを含めて発行(SANにIPが必要)。

6. mkcert セットアップ(Windows)

6-1. インストール

choco install mkcert
# または
scoop install mkcert
mkcert --version
  

6-2. ローカルCA作成

mkcert -install
  

CA保存先例:%LOCALAPPDATA%\mkcert\rootCA.pem

6-3. 証明書発行

mkdir cert
cd cert
mkcert 192.168.0.105 localhost 127.0.0.1
  

7. FlaskでHTTPS起動(共通)

app.run(
    host="0.0.0.0",
    port=5000,
    ssl_context=("cert/192.168.0.105+2.pem",
                 "cert/192.168.0.105+2-key.pem"),
)
  

アクセス例:

https://192.168.0.105:5000

8. ngrokとは(WAN向け)

  • ローカル端末 → ngrokクラウドへアウトバウンド接続でトンネルを張る(NAT配下でも通りやすい)
  • 公開URL(HTTPS)を自動発行し、そこからローカルへ転送
  • TLSは通常ngrok側で終端(ローカルはHTTPでもOK)

社外に公開=穴を開ける。デモ用アカウント・デモ用データ・最低限の認証は必須。

9. ngrok セットアップ(Windows / Ubuntu)

9-1. Windows(推奨:Microsoft Store / WinGet)

「ngrokが見つからない」問題の多くは 未インストール or PATH。まずここを確実に。

# Microsoft Store 経由(推奨)
winget install ngrok -s msstore

# もしくは winget のID指定(環境によってはこちらが通る)
winget install -e --id Ngrok.Ngrok

# 動作確認
ngrok version
where ngrok
  

9-2. Ubuntu(Snap)

sudo apt update
sudo apt install -y snapd
sudo snap install ngrok
ngrok version
  

9-3. Ubuntu(Aptリポジトリ:公式手順)

Snapが嫌ならこれ。ディストリや環境に合わせて使い分け。

curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
  | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
  && echo "deb https://ngrok-agent.s3.amazonaws.com bookworm main" \
  | sudo tee /etc/apt/sources.list.d/ngrok.list \
  && sudo apt update \
  && sudo apt install -y ngrok

ngrok version
  

上の bookworm はDebian向けの例。Ubuntuで使う場合は公式ページの指示に寄せること。

10. ngrok への Token 登録(必須ネタ)

ngrokは「認証トークン(authtoken)」を設定すると、セッション制限が緩くなったり、ダッシュボード管理が効く。 トークンは ngrok のダッシュボードで取得する。

10-1. Token登録コマンド(現行)

ngrok config add-authtoken YOUR_TOKEN
  

10-2. 登録確認(設定チェック)

ngrok config check
  

10-3. どこに保存されるか

  • ngrokは設定ファイル(ngrok.yml)にauthtokenを書き込む。
  • 場所はOSで異なるが、ngrok config 配下のコマンドで管理できる(直接編集も可能)。

旧コマンド(ngrok authtoken ...)が紹介されている記事が残っているが、 現行は ngrok config add-authtoken ... を使うのが確実。

11. ngrok で社外公開(最短)

11-1. ローカルでアプリ起動(HTTPでOK)

python app.py
# http://127.0.0.1:5000 が動いている前提
  

11-2. トンネル開始

ngrok http 5000
  

11-3. 使うURL

  • ngrokの出力に表示される Forwarding の https URL を社外へ渡すだけ。
  • 無料プラン等では再起動でURLが変わることがある(固定URLは設定/プラン依存)。

12. mkcert / ngrok 比較

項目mkcertngrok
用途社内LAN社外WAN
HTTPSローカル終端ngrok終端(公開証明書)
相手端末設定CA信頼が必要不要
URL固定固定(IP/ホスト名が固定なら)変わる場合あり(固定は設定/プラン)
公開リスク低(LAN限定)高(公開)

13. 典型トラブル(刺さるやつだけ)

  • LANから繋がらない → Flaskが host="0.0.0.0" / FW / Wi-FiのAP isolation
  • HTTPS警告 → 証明書にIP未登録(SAN不足) / 端末にCA未信頼
  • ngrokが実行できない → 未インストール / PATH / ngrok version で確認

14. 参考(一次情報)

まとめ:社内はmkcert、社外はngrok。
これを分けるだけで、HTTPS開発テストはほぼ詰まらないと思う。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA