Laravel Forgeの開発でdevドメインをSSL化する方法

ファンブリューの金井です。

Laravel ForgeはLaravelアプリケーション簡単にできるので、結構ヘビーな使い方をしています。

そんな中で、devの付くドメインを利用したときにSSL周りでトラブルが起きたのでメモしています。

目次

まずはHSTSについて

まずはHSTSについて知っておかなければなりません。

強制的にHTTPSのアクセスになるのは、何かしらのキャッシュかと考えていたのですが、原因はこのHSTSというのがdevドメインでは強制になっているようです。

HSTSはHTTPのStrict-Transport-Securityの略です。

HSTSとは、ブラウザでHTTPではなく、HTTPSに変更してアクセスする仕組みです。

こちらの記事を参考にさせていただきました。

寝ても覚めてもこんぴうた
Chrome の HSTS 状態を確認する - 寝ても覚めてもこんぴうた HSTS ってなに? HTTP の Strict-Transport-Security。HSTSと略されます。 ウェブサイトがブラウザに対してHTTPSの代わりにHTTPSを用いて通信をする用に指示するためのもの...

ForgeとLet’s encryptとdevドメインの組み合わせには注意

Forgeを使うときの手順をざっくり示すと、

  1. サーバーの構築
  2. サイトの設定
  3. DNS設定(これはForge外で行う)
  4. リポジトリの指定
  5. SSL化

になります。

ただし、devドメインでHSTSが行われると、5番のSSL化で失敗します。

ここからは予想なので鵜呑みにはしないでください。

ForgeのLet’s encryptはHTTPのチャレンジを行なっているので、devドメインでHSTSが効いてしまうと、チャレンジが失敗します。

SSL化するためのチャレンジなのに、先にHSTSでHTTPSで繋ぎに行くという矛盾がありそうです。

これを回避するためには、次のように手順を変更します。

  1. サーバーの構築
  2. サイトの設定
  3. DNS設定(これはForge外で行う)
  4. SSL化
  5. リポジトリの指定

Laravel Forgeはサイトの設定をすると、index.htmlが自動に作成されます。

この状態でLet’s encryptの設定を行います。

その後にLaravelのアプリケーションをインストールすることで、devドメインのSSL化が完了します。

Laravel Forgeの恩恵を受けつつも理解を深める

Laravel Forgeを使うと、インフラ側をあまり意識せずにアプリのデプロイができてしまいます。

ただ少し細かい設定をしたいときは、どうしてもサーバーを触る必要が出てきます。

どこかでForgeの仕組みを理解した方がいいだろうなと感じました。

金井 泰樹のアバター 金井 泰樹 FUNBREW代表

FUNBREWの代表。
新卒からIT系の企業に勤め、SES、スマホアプリ開発、自社開発の会社で経験を積んで独立。
新卒時代にエンジニアとしてのキャリアを積むのに失敗し、その後に苦労した経験から、現在教育事業の立ち上げを準備中。
強みはウェブシステム開発全般と迅速なレスポンスです。

目次