ローカルのサーバーをhttpsにしないと困るケースが増えてきていると思います。
- LINEログインなど外部の連携サービスがhttpsを強制するケース
- iOSがATSによりhttpsを強制するケース
- ブラウザでカメラを使うケース
自分で証明書を作る方法もあるでしょうが、大抵面倒です。Railsアプリケーションの場合は、puma-devを使うことで簡単に実現できます。
そもそもpuma-devとは
rack/railsのアプリを簡単に立ち上げたり、アイドルになったら止めたり、localhost:3000
等ではなく.dev
ドメインでアクセスできるようにするツールです。
同様のツールにpowというものもありますが、ActionCableとの相性やhttpsのサポートなどを考えると最近アクティブなpuma-devのほうがより良いと思います。
puma/puma-dev: A tool to manage rack apps in development with puma
個人的にはdevドメインでアクセスできるようになるのと、httpsが使えるのが便利で使っています。
.devドメイン
例えばrails new railsapp
のような感じでアプリケーションを作ってpuma-dev用の設定をすれば、http://railsapp.dev というURLでローカルのサーバーにアクセスできるようになります。rails s
はしません。
通常のrails s
だと複数のアプリケーションを立ち上げるときにポートを変えて立ち上げなければならず(rails s -p 3001
など)、アクセスするときもlocalhost:3001等になってしまい、覚えておくのが大変です。
URLがプロジェクト名に対応しているとわかりやすくなります。http://facebook.dev/
とかhttp://twitter.dev/
だったとしたら良いですよね。
LANからアクセス
powと同じようにxip.io
ドメインがサポートされています。LAN内の別の端末からhttp://railsapp.192.168.1.1.xip.io
のようにIPを含めたURLでもアクセスできるようになります。
実機スマートフォンからの確認等に便利です。
本題のhttps対応
実はpuma-devを使うということ以外何も要りません。URLをhttpsにするだけです。
puma-devを使えば特に何もしなくてもローカルの開発サーバーがhttps対応になります。先ほどの例で言えばhttps://railsapp.dev
という感じです。
面倒だったhttps対応がpuma-devで簡単に実現できました。
(余談)iOS端末からhttpsでアクセスする
xip.io
ドメインを使ってiPhone実機からアクセスできることは先程書きました。当然これをhttpsにできるわけですが、その際証明書の警告が出ます。オレオレ証明書を使うときと同様です。
この場合、puma-devと一緒にインストールされた証明書ファイルをiOSデバイスにインストールしてあげることで警告無くアクセスできるようになります。
~/Library/Application Support/io.puma.dev/cert.pem
AirDrop経由などで送ると良いです。