puma-devを使ってRailsの開発サーバーをhttps対応にする

  • 25
    Like
  • 3
    Comment

ローカルのサーバーを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が使えるのが便利で使っています。

(※puma-devはLinuxでも使えるようですが、僕がmacOSでしか試していないのでLinuxではこの記事と異なるかもしれません)

.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で簡単に実現できました。

(追記)

Macでも一手間かけないとhttps接続に警告がでることを指摘してもらいました。 @jnchito Thanks!

まず、証明書をMacにインストールします。ファイルは↓にあるcert.pemです。

~/Library/Application Support/io.puma.dev/cert.pem

次に、その証明書を「常に信頼」にしておきます。

スクリーンショット 2017-03-09 8.07.22.png

これでMacでのhttps対応はOKとなります。

追記2

僕のうろ覚えもあって、https対応のところは証明書を信頼するだけじゃないかもしれません、スイマセン。ブラウザ側で許可する必要があるという話もあるし、他にも必要なステップがあるかもしれません。そしたら適宜コメントで補足してくれるとありがたいです。

@jnchito さんが色々試してくれたので↑でうまくいかない人はコメントを参考にしてください。

(余談)iOS端末からhttpsでアクセスする

xip.ioドメインを使ってiPhone実機からアクセスできることは先程書きました。当然これをhttpsにできるわけですが、その際証明書の警告が出ます。オレオレ証明書を使うときと同様です。

この場合、puma-devと一緒にインストールされた証明書ファイルをiOSデバイスにインストールしてあげることで警告無くアクセスできるようになります。

~/Library/Application Support/io.puma.dev/cert.pem

AirDrop経由などで送ると良いです。