ローカル開発環境でHTTPSを利用する
(auth0.com)- なぜローカルで HTTPS を使うべきなのか
- 本番環境にできるだけ近づけるため
- 強力なセキュリティポリシーの適用 - Content Security Policy(CSP)
- Service Worker、Secure/Prefixed Cookie など特定のブラウザ機能を利用するため
- localhost の代わりに特定のホスト名を利用する
- ローカルで HTTPS を使う
- Self-Signed Certificate を作成する
→ 最も良いツールは OpenSSL だが、簡単な mkcert だけでも十分
→mkcert -installでローカル CA をインストールし、mkcert localhostでキーを生成 - Node.js で localhost のキーを使って HTTPS サーバーを作る
- Self-Signed Certificate を作成する
7件のコメント
CFSSLはどうでしょうか? 私もずっとOpenSSLを使ってきたのですが、最近読んでいる本でCFSSLが紹介されていたんです。長所や短所、比較が気になりますね。
https://web.dev/i18n/ko/how-to-use-local-https/ こういう記事もあったんですね
ローカルサーバーにスマートフォンを接続してテストするときは、HTTPS が必須のようです。
私の用途ではインターネットにつながらないローカルネットワークであることが多く、
ngrok のようなトンネリングは使えません。
上記の証明書作成方法でも動きはしますが、管理しやすいとは言えませんでした。
ほかに別の方法はあるでしょうか?
開発マシンが Windows ベースなら、Fiddler のようなプロキシを立ち上げて、iPhone や Android フォンの proxy アドレスを Fiddler の接続先アドレスに設定すれば、開発マシンの hosts ファイルなどが適用されます。
(Fiddler の自己署名ルート証明書をスマホにインストールする作業が必要です)
mitmproxy のようなものでも可能だと思います。
https://ja.news.hada.io/topic?id=6151
私はこのソリューションを使ってみました。とても満足でした…
以前は ngrok だとインターネットも使えないローカル環境では使えないことと、
帯域幅の制限で十分にテストできないという問題がありました。;;
参考までに、Windows でも PowerShell に
New-SelfSignedCertificateというコマンドがあるので、別途外部ツールをインストールしなくても自己署名証明書を作成できます。以前、これで証明書ファイルを書き出す PowerShell スクリプトを書いて使っていたことがありますね。https://www.sysnet.pe.kr/2/0/12588