ローカル環境でSSL(HTTPS)通信

インターネット上にwebサーバを公開する場合、普通にドメインを取得してホスト名をもとにSSLサーバ証明書を購入すればよい。Let's Encrypt であれば無料で取得ができる。

一方ローカル環境で

  • サーバ(HTTPSサーバ)
  • クライアント(ブラウザ)

で構成した場合、例えば自己署名証明書オレオレ証明書)は導入可能である。
ただしブラウザには正式な認証局として認識されないので警告が表示されてしまう*1

試験的にで良ければngrokでローカルのwebサービスを外部公開する手段がある。HTTPSも可能。ただし恒久的にサービスを公開するのには向いていない。

ドメインを取得して証明書を発行してもらい、サーバ証明書秘密鍵を用いてローカル環境を構築し、ローカル環境のDNSにホスト名を登録しておけば、ローカル環境の中では正しく完結しそうではある。ただしOCSP等の課題はありそう。

*1:証明書ストアにCAの証明書を登録すれば、信頼されたルート証明機関扱いとなり警告は表示されないが、登録が手間。