CloudflareのSSLをサブドメインごとにFlexibleとFullを使いわける方法
CloudflareのSSLは、ドメインごとにSSLタイプを設定しますが、今回はサブドメインごとにFlexibleとFullを使いわける方法をまとめました。
CloudflareのSSL
CloudflareのSSLには、いくつかの種類があります。
- ブラウザとサーバーの間に入って非SSLサイトでもSSL対応できる(Flexible)
- Cloudflareとサーバ間もSSL通信(Full)
どちらにするかは、ドメインごとの設定画面で「SSL」からSSLモードを選択することで選べます。しかし、このモード選択は「ドメイン全体」に適用されるため、サブドメインだけ別のモードにすることは、この設定からはできません。
サブドメインごとにSSLモードを切り替えたいケースとは?
例えば、メインのサーバーはSSL証明書を導入しているけれども、APIやCDNサーバーとして使っているサーバーはSSLに対応していないことがあります。
具体的には、
- Herokuの無料プラン
- Google Cloud Storage
- Amazon S3
- SSLに対応していない無料サーバー
などです。
Herokuは独自ドメインでSSL対応するには有料プランにする必要がありますし、Google Cloud StorageやAmazon S3は、Google、AWSが提供しているロードバランサーを使わないとSSL通信ができません。
こうしたケースでは、CNAMEでサブドメインを設定しているケースがほとんどですが、Cloudflareを噛ませることでSSL化することができます。ただし、メインサーバー用にCloudflareのSSLモードを「Full」にしていると、サーバー側がSSLでないためエラーになります。
Page Rulesを使ってSSLモードを切り替える
Cloudflareには、URLに対してマッチしたパターンでCloudflareの機能を切り替える「Page Rules」という機能があります。ドメインあたり3ルールまでは無料で使えます。
今回は、このPage Rulesを使ってサブドメインごとにSSLモードを切り替えます。
- www.example.com (Full) -> Gitlab Pages w/ Cloudflare SSL
- cdn.example.com (Flexible) -> Google Cloud Storage
- api.example.com (Flexible) -> Heroku 無料プラン
という例で見ていきます。
Page Ruleの設定方法
Page Rulesは3つまで無料なので、デフォルトのSSLモードは、多くのサブドメインで使うタイプの方を選びます。ここでは3つのサブドメインのうち2つがFlexibleなので、CloudflareのSSL設定メニューで選ぶSSLモードは「Flexible」にします。
このままだと、www.example.comの方もFlexibleになってしまい、Gitlab pages側に仕込んでいるCloudflare発行のSSL(SSLモードFull出ないとエラーになる)が無効になってしまうので、こちらのサブドメインの時だけSSLモードをFullにします。
Page Rulesメニューから「Create Page Rule」をクリックして詳細設定画面に入ります。
最初のフォームはURLのマッチパターンになるので、
*www.serversus.work*
最初と最後のアスタリスクは前方・後方一致という意味で、この場合は「wwwの前は何でも」「.workのあとは何でも」ということになります。wwwの前につけているのは、HTTPでアクセスされた時のためです。
二つ目のフォームはPage Ruleに合致した時のタスクです。
今回は、SSLモードを変更したいので一覧から「SSL」を選んで、二つ目の一覧から「Full」を選びます。
これで、
- www.example.com (Full)
- cdn.example.com (Flexible)
- api.example.com (Flexible)
という条件分けが実現できました。
現在はサイトのSSL化は必須となっていて、SSL対応が難しいサーバーやサーバーレスサービスを使う際に、CloudflareのSSL化は非常に便利です。今回のSSLモードの使い分けを使えば、どんなサーバーに対しても常時SSL化ができますね。
なお、記事中に出てきたCloudflareのSSL証明書については、こちらの記事をどうぞ。
無料で15年分!Cloudflareの無料SSL証明書を使ってみる
静的コンテンツのビルド・デプロイ。・ホスティングサービスNetlifyが、ビルド時間の制限・課金を新設しました。課金は2019年12月課金サイクルからスタートとのことです。
価格は記載がある場合を除き、すべて税込みです。
関連キーワード
CDNの新着記事
- CDN無料で使えるCloudflare Zero Trustでノープログラムでアクセス制限を実装する 2022.4.27
- CDNCloudflareでLets Encryptの更新エラーに対応する 2020.11.16
- CDNエッジが大事!HTTP3.0時代のCDNの活用方法 2020.11.9
- CDNCloudflareのキャッシュを操作する方法 2020.9.21
- CDNCloudflareのキャッシュについて理解する 2020.9.17
- CDNCloudflareで静的サイトをキャッシュする時のベストプラクティス 2020.9.2
- CDNCloudflareを使ってwwwあり・なしURLを正規化する方法 2020.8.25
- CDNCloudflare Registrarで登録できるドメイン一覧と更新料金 2020.5.25