さくらのレンタルサーバで Cloudflare を使う
概要 (ここだけ読めば OK)
さくらのレンサバで Cloudflare を使ってみよう
↓
できているひとの記事を参考にしよう
さくらのレンタルサーバ+αで費用を節約しつつ軽めのサイトを作る #SSL - Qiita
↓
ERR_TOO_MANY_REDIRECTS
↓
上記記事の内容に反するが以下を設定
「エッジ証明書 > 常に HTTPS を使用 をオフ」
↓
解決
とりあえずここを読めばOK。
ERR_TOO_MANY_REDIRECTS · Cloudflare SSL/TLS docs
記事を書いた経緯
さくらのレンタルサーバーで Cloudflare を使ってみようと思ったが、SSL の設定で手間取っていた。そこで検索をかけたところ、以下の記事を見つけた。
さくらのレンタルサーバ+αで費用を節約しつつ軽めのサイトを作る #SSL - Qiita
この記事自体は大変参考になったが、記事通りに設定すると、ERR_TOO_MANY_REDIRECTS が発生してしまう。そこでさらに検索をかけたところ、以下の記事が見つかった。
さくらのレンタルサーバがあまりよろしくなかったお話 - Twilight
CloudFlareのFull SSLを使用しようとしたら問題が発生。
さくらのレンタルサーバの443番ポートは80番ポートへの単なるプロキシでした…
- クライアントがCloudFlare(https)に対して要求を送信する
- CloudFlare(https)がさくらのレンタルサーバ(https)に対して要求を送信する
- さくらのレンタルサーバ(https)の443番ポートは80番ポートへのプロキシなので名前解決を行う
- 名前解決した結果、当然CloudFlareのIPアドレスが返ってくるので、そのアドレスを使用し接続を試みる
- CloudFlare (https) はさくらのレンタルサーバ(https)へ接続を試みてコンテンツを取得する
- 2番に戻り無限ループ。 CloudFlareは下記の様なエラーを吐く
あまり知識がないので自信はないが、どうやら上記か上記に似た状態になってしまっているらしい。しかしどこでどういう設定をすればよいのか分からず、しばらく困ってしまった。備忘録として設定手順を以下に記載する。
設定手順
ほぼ以下の記事と同じ設定になるが、一点だけ正反対の設定を行う。他も違うかもしれないが、そこは好みです。
さくらのレンタルサーバ+αで費用を節約しつつ軽めのサイトを作る #SSL - Qiita
DNS の設定
-
Cloudflare > サイト選択 > DNS > レコード
- 該当レコードの「プロキシ ステータス」を 「DNS のみ」に変更
- 該当レコードの「プロキシ ステータス」を 「DNS のみ」に変更
オリジン証明書の設定
秘密鍵の生成と CSR の作成
-
さくらのコントロールパネル > ドメイン/SSL > ドメイン/SSL > 設定 > SSL設定
- 「登録設定を始めるSSL証明書の種類を選択」をクリック
- 独自SSLを「利用する」をクリック
- 「秘密鍵の登録」をクリック
- 「秘密鍵の生成」をクリック
- 「CSRの作成(任意)」をクリック
- 適当に入力して「作成」をクリック
国コード「JP」、都道府県「a」、市町村「a」、会社名「a」 - CSR の「内容表示」をクリック
- CSR をコピー
オリジン証明書の作成
-
Cloudflare > サイト選択 > SSL/TLS > オリジン サーバー
- 「証明書を作成」をクリック
- 「自分のプライベート キーと CSR を使用する」を選択
- CSR を貼付
- 証明書の効力を「15 年」に設定
- 「作成」をクリック
- オリジン証明書の内容をコピー
証明書のインストール
-
さくらのコントロールパネル > ドメイン/SSL > ドメイン/SSL > 設定 > SSL設定
- 「証明書インストール」をクリック
- オリジン証明書の内容を貼付
- 「作成」をクリック
- 「中間証明書インストール」をクリック
- 中間証明書の内容を貼付
- 中間証明書は以下のページ内のリンク「Cloudflare Origin RSA PEM」からダウンロード
- 「作成」をクリック
- 以下画像のように「SSL証明書の表示」が上部に出れば OK
これでオリジン証明書 (Cloudflare ― オリジンサーバー (さくら) 間の証明書) が設定できた。
さくら側でSSLを有効にする
-
さくらのコントロールパネル > ドメイン/SSL > ドメイン/SSL > 設定 > 基本設定
- 「SSLを利用する」にチェック
- 「HTTPSに転送する」にチェック
- 「保存する」をクリック
Cloudflare 側でSSLを有効にする
-
Cloudflare > サイト選択 > DNS > レコード
- 「プロキシ ステータス」を 「プロキシ済み」に戻す
- これで ブラウザ ― Cloudflare 間の証明書が設定される。(暗号化がオフになっていない場合)
- 「プロキシ ステータス」を 「プロキシ済み」に戻す
-
Cloudflare > サイト選択 > SSL/TLS > 概要
- 「フル (厳密)」を選択
- 「フル (厳密)」を選択
-
Cloudflare > サイト選択 > SSL/TLS > エッジ証明書
- 常に HTTPS を使用 を「オフ」へ変更
- 最小 TLS バージョン を「TLS 1.2」に設定
- 日和見暗号化 を「オン」に設定
- TLS 1.3 を「オン」に設定
- HTTPS の自動リライト を「オン」に設定
- 常に HTTPS を使用 を「オフ」へ変更
余談
- 同じさくらのレンタルサーバで、なぜ設定に違いが出るのか謎。2022 年 2 月からサーバーが変わったそうなので、その影響だろうか?
- 上記作業はすべて Android スマートフォンで行った。
- たまたま同時期に Publickey さんが同じ構成にトライされており、リプライ欄の情報が参考になった。 (当記事執筆現在も攻撃を受けておられるよう。早期の解決を祈っております)
Discussion