無料で個人Webサイトをhttps/SSL暗号化する方法:Cloudflare共有SSL証明書/Let’s Encrypt

Googleの方針もあり、Webサイトをhttps/SSL暗号化するのは常識となってきました。 対応していないとURLバーに「保護されていません」というメッセージが表示されてしまいます。 一方で、個人情報を扱わない趣味の個人サイトで、有料の正式なSSL証明書を導入するのは現実的ではありません。 ここでは無料で使えるCloudflare共有SSL証明書を使って、Webサイトをhttps化してみます。

Let’s Encrypt

無料で使用できるSSL証明書としてはLet’s Encryptが有名です。 使用しているWebサーバーにコンソール・ログインして、コマンドラインでアプリケーションがインストール、実行できる環境にある場合はベストソリューションでしょう。 しかしSOHO向けレンタルWebサーバーなどでは、このような細かい操作は不可能な場合も多く、これまではhttps化をあきらめるか、有料の正式SSL証明書を導入するしかありませんでした。 Let’s Encryptオフィシャルサイト

Cloudflareの共有SSL証明書

CDN(コンテンツデリバリーネットワーク)サービス等を提供する米国Cloudflare社は、一般ユーザー向けに、無料で共有SSL証明書を発行するサービスを行っています。 これは、自分のWebサーバーを示すDNSをCloudflare社のものに変更することで、WebサーバーのコンテンツをCloudflare社のCDN経由で配信するものです。 これを利用すれば、コンテンツは世界中に存在するCloudflare社サーバーからの配信となるためWebサイトの表示が高速化できるだけでなく、Cloudflare社のサーバーとエンドユーザー間を共有SSL証明書で暗号化してくれます。
このサービスを利用するのに必要な最低条件は下記の2つだけです。
  • 独自ドメイン名を取得していること。
  • 使用しているWebサーバーのDNSが変更できること。
そして必要な作業はすべてCloudflareのWebサイトへの情報入力のみで完了します。 現在使用しているWebサーバーの管理画面などを開き、DNSが変更できることを確認しておきましょう。 条件が整ったら、早速設定してきます。 Cloudflare社オフィシャルサイト

Cloudflareの無料アカウントを取得する

まずはCloudflareの無料アカウントを取得します。
PC Cloudflare社オフィシャルサイトを開き、「サインアップ」を選びます。
PC e-mailアドレスと任意のパスワードを考えて入力し、「Create Account」をクリックします。
PC つづいてhttps化したいあなたのWebサイトのURLを入力します。
PC つづいてこのような画面になります。「NEXT」をクリックします。
PC つづいてプランの選択画面になります。月200ドルのBUSINESSプランがおすすめされますが、ここは左端の無料プランを選びます。 プランを選択したら「Confirm Plan」をクリックします。
PC 確認画面になります。「Purchase」をクリックします。
PC 現在のDNSの確認画面になります。デフォルトではドメイン名へのAレコードとWWWのCNAMEレコードがCloudflare経由となります。 画面をスクロールして「Continue」をクリックします。
PC 現在利用中のDNSサーバー名と、Cloudflareが提供するDNSサーバー名が表示されます。 記録しておきましょう。 また、レンタルWebサーバーの管理画面にログインして、DNSサーバー名をCloudflareのものに変更します。 変更がすんだら「Continue」をクリックします。
PC するとCloudflareの管理画面(ダッシュボード)に移行します。 DNSへの登録には時間がかかります。最初は「Website not active」となっています。 しばらく時間をおいて「Recheck Nameservers」をクリックしてみてください。 最大24時間以上待ってみてください。
PC 今回は30分程度でCloudflareからActiveになったことを示すメールが届き、このように「Active」になりました。
PC Cloudflareの管理画面(ダッシュボード)にログインし、[ドメイン名]-[Crypt]のページを開きます。 SSL欄の中の「Universal SSL Status」が「Active Certificate」になっているのが確認できます。
なお、この右のドロップダウンリストは、初期値として「Full」が選択されています。 これは、訪問者-Cloudflare間に加え、Cloudflare-Webサーバー間も暗号化する設定です。 この設定で使用するにはWebサーバーにも証明書のインストールが必要です。
Webサーバーに証明書をインストールせずに使用するには、ここを「Flexible」に変更します。
逆にWebサーバーに正式な証明書をインストールできる場合は「Full(strict)」に変更します。
すべての設定を完了後、最大24時間以内に暗号化通信が有効になります。 24時間後、あなたのWebサイトを「https://」でアクセスしてみて、エラーとなっていないか確認してください。

メールアドレスの認証

PC Cloudflareのアカウントを取得すると、「[Cloudflare]: Please verify your email address」というタイトルで、登録したメールアドレスの認証メールが届きます。 メールの「Verify email」ボタンをクリックすれば認証が完了します。
このメールはプロバイダによって迷惑メールに分類されがちです。 もし届いていないようであれば、迷惑メールボックスを確認しましょう。 差出人アドレス「[email protected]」を必着設定にしておくと良いかもしれません。

WebサーバーへのFTP接続の変更

Cloudflareのサービス利用開始後に、Webコンテンツ更新のためWebサーバーへFTP接続する場合、FTPクライアントソフトからの接続名に注意する必要があります。 Cloudflareで保護されたWebサーバーへはドメイン名を使ったFTP接続ができません。 直接IPアドレスを指定して接続してください。 Using FTP with Cloudflare.(Cloudflare)

埋め込み画像、YouTubeリンク、アフィリエイトリンクの対応

https化すると、古いYouTubeの埋め込み動画や、アフィリエイトリンクが表示されなくなることがあります。 また、ページ内に"http://"で参照している画像などがあると、アドレスバーに「このページの一部(画像など)は安全ではありません」といった警告が出てしまいます。 リンクの見直しが必要となります。
YouTubeの場合は、"http://www.youtube.com/..."を"https://www.youtube.com/..."に変更します。 imgタグのsrcは、多くの場合"http://..."を"//..."とすることで対処できます。 アフィリエイトの場合はケース・バイ・ケース、アフィリエイトのオフィシャルサイトを見て、最新のリンクを作り直します。
これらの修正に伴い、Webページのデザイン見直し作業も発生する可能性があります。 https化で最も時間がかかる作業です。 慎重に見直しを行ってください。

常時SSLのためのリダイレクトの設定

Cloudflareに届いたhttpリクエストを、httpsリクエストにリダイレクトすることができます。 上の埋め込み画像、YouTubeリンク、アフィリエイトリンクの対応をすべて終え、各ページのコンテンツがhttps/SSL経由でも正しく表示されることが確認出来たら、リダイレクトを設定しましょう。
PC Cloudflareの管理画面(ダッシュボード)にログインし、[ドメイン名]-[Crypt]のページを開きます。
PC 画面をスクロールすると現れる「Always use HTTPS」を「On」にすればOKです。 以降、"http://"でアクセスしてきたユーザーは"https://"にリダイレクトされます。
PC さらに、httpでアクセスしてきたビジターに対して、今後httpsでの接続を要求する場合は「Enable HSTS」を有効にします。