ファンブリューの金井です。
Laravel ForgeはLaravelアプリケーション簡単にできるので、結構ヘビーな使い方をしています。
そんな中で、devの付くドメインを利用したときにSSL周りでトラブルが起きたのでメモしています。
まずはHSTSについて
まずはHSTSについて知っておかなければなりません。
強制的にHTTPSのアクセスになるのは、何かしらのキャッシュかと考えていたのですが、原因はこのHSTSというのがdevドメインでは強制になっているようです。
HSTSはHTTPのStrict-Transport-Securityの略です。
HSTSとは、ブラウザでHTTPではなく、HTTPSに変更してアクセスする仕組みです。
こちらの記事を参考にさせていただきました。
ForgeとLet’s encryptとdevドメインの組み合わせには注意
Forgeを使うときの手順をざっくり示すと、
- サーバーの構築
- サイトの設定
- DNS設定(これはForge外で行う)
- リポジトリの指定
- SSL化
になります。
ただし、devドメインでHSTSが行われると、5番のSSL化で失敗します。
ここからは予想なので鵜呑みにはしないでください。
ForgeのLet’s encryptはHTTPのチャレンジを行なっているので、devドメインでHSTSが効いてしまうと、チャレンジが失敗します。
SSL化するためのチャレンジなのに、先にHSTSでHTTPSで繋ぎに行くという矛盾がありそうです。
これを回避するためには、次のように手順を変更します。
- サーバーの構築
- サイトの設定
- DNS設定(これはForge外で行う)
- SSL化
- リポジトリの指定
Laravel Forgeはサイトの設定をすると、index.htmlが自動に作成されます。
この状態でLet’s encryptの設定を行います。
その後にLaravelのアプリケーションをインストールすることで、devドメインのSSL化が完了します。
Laravel Forgeの恩恵を受けつつも理解を深める
Laravel Forgeを使うと、インフラ側をあまり意識せずにアプリのデプロイができてしまいます。
ただ少し細かい設定をしたいときは、どうしてもサーバーを触る必要が出てきます。
どこかでForgeの仕組みを理解した方がいいだろうなと感じました。