Web サイトの常時 SSL 対応、終わっていますか?
このブログでは SSL 対応のサービスをいくつか紹介していますが、
現在使用しているサーバを引っ越ししたくない!というケースもあるはずです。

……はい、あります! 今のサーバを使ったまま、SSL に対応する方法!!

Cloudflare で SSL に対応する

Cloudflare は CDN(Content Delivery Network)を提供しています。
世界中にサーバを置いて、レスポンスの良いサーバから Web を表示させるんです。

Cloudflare といえば、公開 DNS 1.1.1.1 のスポンサーもしてますよ。
世界中から参照される公開 DNS の運用は、相当の設備が必要です。

Cloudflare を使う前提条件

独自ドメインで運用している

どこかのレンタルサーバや Web サービスで提供されているサブドメインなどは対象外です。
ただしサブドメインで NS(ネームサーバ名)を設定できる場合は、
独自ドメイン同等に扱えるので、Cloudflare で使用可能です。

ネームサーバを設定・変更できる

ここでのネームサーバは A・AAAA・CNAME・TXT・MX とかの設定ができるところではなく、
通常は最低 2 ヶ所設定されているネームサーバ名を変更できる、という事です。
多くの場合 ns(1).●●●.com ns2.●●●.com という感じですね。

注意事項

ネームサーバを書き換えるので、例えば FTP を接続する場合、
設定を行う独自ドメイン名を含んだサーバ名では接続できなくなってしまいます。
レンタルサーバ業者提供の異なるドメイン名であれば、問題なく使用可能です。
同じようにメールサーバも影響を受けます。SMTP・POP・IMAP のサーバ設定です。
各サーバの設定を確認してみて下さい。

動的に変化する場合は Cloudflare で細かい設定を要するかもしれません。
HTML を直接記述していたり、静的サイトジェネレーターを使用している場合は
Cloudflare を使用する事で、高速表示も期待できます。

とりあえず試してみたい場合は……

ネームサーバを変更するので、個人ブログとかを独自ドメインで運営していて、
まだ参照は多くないので、一時的に参照できなくなっても大丈夫! という Web で
まずは試してみると良いと思います。

ネームサーバを設定する

Cloudflare のアカウントを登録すると……

Cloudflare Addsite

こんな画面になります。Cloudflare を使用したいサイト名を入れます。
通常は 独自ドメイン名のみ でしょうか。

ここでは surge-sh.cf というドメインで例を出しておきます。
もちろんこれは実際に設定したい独自ドメインに置き換えて下さい。

.cf は無料ドメイン Freenom で提供されています。
以前は接続できなくなってたりしたのですが、
今は Web がたまに重くなる事があるものも、
ネームサーバは安定稼動している感じがあります。
Google がドメインの種類で検索結果を影響させなくなっているので、
Freenom の無料ドメインレベルで非表示にされる事なく、
上位に表示される Web サイトも運用できる状況になっています。
(一部サービスでは .tk を中心にブロックしている場合があります)

さて、Cloudflare 側では入力したドメインのネームサーバ情報を得て表示しています。

Cloudflare DNS Records

この画面とドメインの設定画面をにらめっこし、一致している事を確認します。
不足していれば Cloudflare 側へ追記して下さい。
何か不足したいたり、1 文字でも誤っている場合は
何か参照ができなくなってしまいますので、慎重に。

今回使用している Web サービスは Surge です。

困った事がありましてねぇ~。jpn.surge.sh で運用していたのですが、
robots.txt でインデックス登録を拒否している事がわかりまして。

そこで独自ドメイン surge-sh.cf を使用する事にしたのですが、
Surge だと独自ドメインの SSL 化は
月 US$30 の Surge Professional になって、証明書も発行しないといけないんです。
そこで Cloudflare を採用しようと。

Surge で独自ドメインを使用する場合、http 通信は無料でも行えます。
設定は次にあります。

surge.sh と www.surge.sh を設定すれば良いです。メールは使っていません。
ALIAS na-west1.surge.sh が使えないので、A 45.55.110.124 で設定します。

Type Name Value TTL
A @ 45.55.110.124 Auto
CNAME www na-west1.surge.sh Auto

@ はドメイン名 surge-sh.cf に置き換わります。これで大丈夫です。

それではネームサーバの設定を確定します。

Cloudflare Nameservers

これをドメイン側のネームサーバに設定します。今回は Freenom の Nameservers です。

Freenom Nameservers

これを設定する事で Cloudflare サーバの参照がはじまりますが、
変化するのはドメインの種類や管理方法によって数分~数日要する場合があります。
また、参照したてだった場合は、パソコンやルータ等で DNS キャッシュを蓄えます。

Surge をつかう。が https で参照可能に

https://サイト名/ で参照できるようになったら成功です。

という事でこの方法で実際に Cloudflare を使用している https://surge-sh.cf/ がこのサイトです。

Cloudflare・Freenom・Surge すべて無料ですよ! 無料でここまでできるんです。
Surge も気に入っていたので、surge コマンドによる公開はそのままで、
https: 表示できるようになったのは嬉しいですね~。

Cloudflare の仕組み

でもどういう仕組みなのか不思議に思う人もいるかもしれません。

  1. Web サイトを参照する
  2. ドメインは Cloudflare を参照しているので、Cloudflare のサーバが反応
  3. Cloudflare のサーバは設定されたネームサーバから元々のサーバを参照
  4. 元々のサーバは従来同様 Web サーバの HTML などを返す
  5. Clousflare のサーバはそのまま送出する

これ、プロキシサーバというものです。
でも、SSL 対応もあり、このままだとレスポンス悪そうじゃないですか。
ここは Cloudflare に仕組みがあります。一度表示するとキャッシュするんです。
2 回目はサーバを参照するなく、Cloudflare のキャッシュから送ります。
でも更新直後のレスポンスもはやいんです。
更に圧縮したり、hTTP/2 などの新技術にも対応し、
DNS も CNAME から IP アドレスを得るのではなく、
最終的な IP アドレスを蓄えて返信したりして、
少しでもレスポンスをはやくしようと、いろんな機能を駆使しています。

常時 SSL に変更する

初期状態では http: ・ https: どちらでも参照できるようになります。
これまで http: で運用してあるので、http: のまま参照できるようにしつつ
まずは https: でも参照できるようにします。

https: で参照できるようにしたところで、リンクを確認し修正しておきます。
http: でリンクしているところがあれば https: へ変更する、という事ですよ。
リンクも問題がなければ、常時 SSL に切り替えましょう。
Cloudclare の Crypto 内にある Always Use HTTPS を ON にします。
これで http: で参照しようとすると https: のアドレスへ転送します。

Cloudflare Always Use HTTPS

なお、同じページ Crypto の SSL を
Full から Flexible に変更するよう説明しているところがありますが、
それらの投稿は数年前で常時 SSL や発行されている証明書に違いがあります。
自分は PC・スマートフォン向けの Web サイトであれば
今は Full のままでも良いと思っています。

Surge をつかう。の SSL 証明書

この場合 SSL 証明書は Cloudflare 自身が署名している証明書になるのですが、
最新の Web ブラウザは Cloudflare 発行の証明書も有効になっています。
上画像は Windows 10 の Google Chrome です。
このままであれば証明書も自動更新されます。
つまり、SSL 証明書の事を考慮しておく必要がないんです。
もちろん証明書を独自に発行して設定する事も可能になっています。

あとは微調整

アップロード手段(FTP など)とメールはサーバ名を変更する必要がある場合がありますが、
そのまま従来のサーバへ行います。

一方サブドメインを追加する場合など、ネームサーバの設定は
ドメイン側ではなく、Cloudflare 側となります。
また SSL の設定や圧縮などの微調整を Cloudflare で行えます。

Cloudflare 変更後の注意

動的な場合があるケースはキャッシュを優先せずにサーバへ確認を行うのですが、
通常あまり変更されない CSS・JS・画像などを更新した場合は、
サーバへアップロードしても、キャッシュの情報から更新されない事があります。
この場合は Cloudflare の Dashboard から Purge Cache、
または Caching 内の Purge Cache でキャッシュをクリアして下さい。


追記 2019/03/03

Cloudflare をつかおう。を公開しました。無償使用できる範囲で説明しています。