CDN

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」をクリックして詳細設定画面に入ります。

Cloudflareの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証明書については、こちらの記事をどうぞ。


価格は記載がある場合を除き、すべて税抜きです。

この記事の関連キーワード

CDNの記事