10分以内に無料でウェブサイトにHTTPSを追加する方法と、これを今すぐ行う必要がある理由…

Googleは先週、7月に登場するChrome68がすべてのHTTPページを「安全ではない」とマークすることを発表しました。

これは、デフォルトでWebを暗号化に向けて推進するためのこれまでで最も強力なナッジであり、長い間待ち望まれていました。

誰もがHTTPSの時流に乗るべき理由を説明する証拠はたくさんありますが、多くの人々は依然として自分のサイトに安全にサービスを提供することの価値を認識していません。

なぜブログにこれが必要なのですか?」

以前にHTTPSの価値について書きましたが、繰り返しになります。

  • HTTPSは、Man In theMiddle攻撃からユーザーを保護します。
  • Service Workerなどのブラウザの多くの新機能を活用するには、HTTPSが必要です
  • HTTPSはSEOに影響を与える

確信が持てない場合は、dosmysiteneedhttps.comを読んで、すべてのWebサイトを安全に提供する必要がある理由の全体像を把握してください。

それでもうまくいかない場合は、人生はあなたにとってはるかに困難になりつつあります。

安全でないサイトからユーザーを遠ざけるために、ブラウザは特定のコンテキストで安全に提供されていないWebサイトを恥じています。

Chrome 56は、機密性の高いログインフィールドを持つページを「安全ではない」とマークすることでこの傾向を開始しましたが、Chrome 62は、この警告を、あらゆるタイプの入力フィールドを含むすべてのHTTPページに拡張しました。さらに、警告は、入力フィールドが含まれているかどうかに関係なく、シークレットモードのすべてのHTTPページに表示されます。

Firefoxは、安全でないログインフォームに入力しようとしたときにもユーザーに警告します。

Chromeは、今後すべてのHTTPページにこの警告を表示することを決定しました。最終的に、「安全ではありません」ラベルの横のアイコンが変更され、テキストが赤になり、HTTPページが信頼できないことをさらに強調します。

ユーザーがWebサイトでこの警告を表示しないようにするには、有効なSSL証明書を取得する必要があります。良いニュースは、そうすることは以前ほど難しくも高価でもないということです。実際、Cloudflareを使用してHTTPSをサイトに無料でデプロイする方法を紹介します。そして、それはまったく時間がかかりません。

なぜCloudflare?

CloudFlareは、サーバー側のインフラストラクチャに関係なく、SSL証明書を無料で保護するのに役立ちます。また、GitHub Pages、Ghostなどのサーバーアクセスを提供しないプラットフォームでホストされているサイトでも機能します。

何もインストールしたり、コードを記述したりする必要はありません。これにより、HTTPSをWebサイトに展開することは非常に優れたオプションになり、セットアップ時間は文字通り10分以内で済みます。

また、ここでは取り上げませんが、Webサイトのセキュリティとパフォーマンスにおいて他にも無数の利点があります。しかし、それがどのように機能するかについて少しお話ししますので、それらすべてをどのように実行できるかについての良いアイデアを得ることができます。

Cloudflareのしくみ

Cloudflareはあなたのウェブサイトへの訪問者とあなたのサーバーの間のトラフィックの真ん中に位置しています。訪問者は、通常の人間、クローラー、ボット(検索エンジンボットなど)、またはハッカーである可能性があります。Cloudflareは、Webサーバーとサイトへの訪問者の間の仲介役として機能することにより、すべての不正なトラフィックを除外して、優れたものだけが通過するようにします。

今、あなたはそれがあなたのウェブサイトの速度に悪影響を与える可能性があるかどうか疑問に思うかもしれませんが、それはまったく逆です。Cloudflareは世界中にデータセンターを持っているので、訪問者に最も近いエンドポイントを使用するだけで、サイトは以前よりもはるかに高速になります。

Cloudflareがどのように機能するかがわかったので、インフラストラクチャにWebサイトをセットアップする方法と、HTTPSを無料で利用する方法を見てみましょう。ここでは、Cloudflareが無料で提供する機能に焦点を当てますが、有料プランには多数の追加機能も用意されていることに注意してください。

新しいサイトの設定

Cloudflareにサインアップした後、最初に行うことは、ドメインを追加してDNSレコードをスキャンすることです。

スキャンが完了すると、ドメイン上のすべてのDNSレコードが表示されます。Cloudflareを有効にするサブドメインを選択し、必要な変更を加えることができます。準備ができたら、[続行]をクリックして次の手順に進みます。

無料プランを選択し、[続行]をクリックします

次に、ドメインレジストラのネームサーバーをCloudflareが提供するネームサーバーに変更する必要があります。各ドメインレジストラでこれを行うプロセスはわずかに異なるため、ドメインレジストラに確認してください。

Namecheapでの表示は次のとおりです。

ここで、ネームサーバーの変更が伝播を完了するのを待つ必要があります。しばらくしてから[ネームサーバーの再確認]をクリックして、サイトがCloudflareでアクティブになっているかどうかを確認します。これはセットアップの最も長い部分であり、最大24時間かかる可能性がありますが、私の経験では5分未満でした。

ネームサーバーの更新がCloudflareによって検証されると、サイトはサービスでアクティブになります。

DNS設定がどこにでも伝播されていることを絶対に確認したい場合は、What's My DNSを使用すると、ドメインがさまざまな場所で解決するIPアドレスを確認できます。

digまたはnslookupをコマンドラインで使用して、ドメインのDNS構成を確認することもできます。

このようにして、ドメインに向かうすべてのトラフィックがCloudflareを介してルーティングされていることを確認できます。

Cloudflareの設定を開始する前に、ブラウザがキャッシュからの古いDNSレコードを使用していないことを確認してください。ChromeとFirefoxでは、ブラウザの履歴をクリアすることでこれを行うことができます。

SSLを無料で入手

SSLは依然としてプレミアムサービスであり、多くの認証局はSSL証明書を発行する前にかなりの金額を請求します。どこでも無料で入手できるものではありませんが、業界では急速に変化しています。

CloudflareがWebトラフィックの真ん中にあるので、ドメインでSSLを自動的に取得する必要があります。証明書がアクティブになるまでに最大24時間かかる場合がありますが、私の経験では、それほど時間はかかりません。

証明書がアクティブになったら、ブラウザにサイトをロードします。HTTPS経由で提供されるサイトと、アドレスバーに素敵な緑色の南京錠が表示されます。

証明書の詳細を表示すると、証明書を発行した認証局(私の場合はComodo)と有効期限が表示されます。Cloudflareの素晴らしい点の1つは、証明書の更新が自動的に行われるため、心配する必要がないことです。

フレキシブル、フル、フル(厳密)SSLの違い

Cloudflareを使用すると、何も設定しなくてもサイトでSSLを無料で取得できますが、オリジンから直接SSLを介してサイトにサービスを提供するのとは必ずしも同じではありません。

CloudflareのSSLには3つの実装があります。デフォルトで取得する最初のものは、FlexibleSSLです。この場合、トラフィックはサイトのユーザーとCloudflareの間で暗号化されますが、この暗号化はオリジンサーバーまでは行きません。Cloudflareは引き続きプレーンHTTPを介してサーバーと通信します。

これは、Cloudflareとサーバーの間の中間者(ネットワークプロバイダーなど)がトラフィックを確認できることを意味します。Webサイトで機密情報を収集する場合は、このオプションの使用を控えてください。

オリジンサーバーに至るまで暗号化を行うには、完全または完全(厳密)実装を使用する必要があります。前者では、サーバーに有効な証明書をインストールする必要がありますが、証明書の信頼性は検証されないため、自己署名証明書を使用できます。一方、完全(厳密)実装では、信頼できる認証局によって署名された有効なSSL証明書をインストールする必要があります。

ComodoなどからSSLを購入したくない場合は、Cloudflareから無料のOrigin CA証明書を取得できます。これは、Cloudflareによって信頼されているため、FullまたはFull(Strict)オプションのいずれかで使用できます。ただし、これらの証明書はCloudflareによってのみ信頼されているため、CloudflareのインフラストラクチャからWebサイトを削除することにした場合、これらの証明書は機能しなくなることに注意してください。

サーバー環境を制御していない場合、たとえば、サイトがGitHub Pagesまたは同様のプラットフォームでホストされている場合、フルまたはフル(厳密)実装を使用できません。つまり、ユーザーのアドレスバーにHTTPSが表示されていてもトラフィックは暗号化されたオリジンサーバーに完全には行きません。

ただし、HTTPSを使用しない場合と比較すると、クライアント側でユーザーが中間者攻撃から保護されるため、これは大幅な改善です。

SSL実装を強化する

どのSSL実装を選択しても、ユーザーが安全でないHTTPを介してサイトにアクセスできないようにするためにSSL実装を強化する方法があります。Qualys SSL Labsは、SSL構成でテストを実行して、改善の余地があるかどうかを確認するのに役立つツールです。

私は自分のドメインでAグレードを取得していますが、結果を詳しく調べると、鍵交換と暗号強度の面で間違いなく改善の余地があることがわかります。

SSLを強化し、評価をさらに高くするためにCloudflare内で実行できるいくつかのことを見てみましょう。

どこでもHTTPSを強制する

HTTPSを使用しなくなったら、ユーザーが安全でない接続を介してサイトにアクセスするのを確実に防ぎたいと考えています。Cloudflareでこれを行うには、すべてのHTTPトラフィックをHTTPSに301リダイレクトします。

[暗号設定]で、[常にHTTPSを使用する]オプションを見つけてオンにします。

HTTP Strict Transport Security(HSTS)を有効にする

過去にHSTSがサイトのSSLをどのように強化するかについて書きましたが、もう一度簡単に説明します。

HTTPトラフィックをHTTPSにリダイレクトする301だけの問題は、最初の安全でない要求が依然としてネットワークを経由することです。つまり、トラフィックにアクセスできる人なら誰でも読み取ることができます。

HSTSは、指定された期間、Webサイトに対して安全でない要求を行わない可能性があることをブラウザーに通知することにより、その問題を修正する応答ヘッダーです。

ヘッダーは次のようになります。

strict-transport-security: max-age=31536000

ブラウザがこのヘッダーを受信すると、次の31,536,000秒(1年分)の間、サイトに対して安全でない要求を行うことはありません。代わりに、すべてのHTTPリクエストは、ネットワーク経由で送信される前に、内部でHTTPSにアップグレードされます。

すべてのサブドメインがHTTP経由でアクセスされないようにする場合は、includeSubdomainsディレクティブが必要です。preloadディレクティブを追加して、ブラウザーベンダーがサイトをHTTPSのみとしてブラウザー自体に焼き付けることを許可することもできます。

strict-transport-security: max-age=31536000; includeSubdomains; preload

ドメインでHSTSを有効にすると、誰かがHTTPSを介してWebサイトをロードすると、それ以降は安全なスキームを介してのみWebサイトにアクセスできるようになります。

したがって、サイトでHSTSを有効にする前に、すべてのトラフィックがHTTPS経由で配信されることを確認してください。そうしないと、問題が発生します。

Cloudflareでこれを有効にするには、暗号設定に移動し、HTTP Strict Transport Security(HSTS)セクションまでスクロールダウンします。[ HSTS設定の変更]をクリックし、関連するすべてのオプションを有効にして、[保存]をクリックします

念のために言っておきますが、HSTSのブラウザサポートはかなり優れています。

安全でないスキーム参照を修正

パッシブリソース(画像など)を安全なページに安全に埋め込んでいない場合でも、ブラウザはそれを正常にロードします。アドレスバーから緑色の南京錠を外すだけです。このエラーの例をここで見ることができます。

ブラウザコンソールを確認すると、安全に埋め込まれていないリソースを示す警告またはエラーが表示されます。この場合は

HTTP image

これを修正するには、スキームをHTTPSに変更するだけで、すべてが正常に戻ります。

HTTP image

サイトに多くのコンテンツが安全に埋め込まれていない場合、それぞれを見つけて修正するのは非常に面倒です。しかし、Cloudflareは自動HTTPS書き換え機能でここでもあなたを助けることができます。

Webサイトのコンテンツが安全に提供されないようにするために、サイトにコンテンツセキュリティポリシーを実装することを検討してください。

次に、上記の変更がSSLラボレポートにどのように影響したかを見てみましょう。ドメインでテストを再実行したところ、A +の評価が得られました。

グラフで個々の評価を確認すると、何も変わっていませんが、本当に安全なSSL実装を無料でわずか数分で取得できます。

無料SSLのためのCloudflareの代替

何らかの理由でCloudflareを使用したくない場合は、HTTPSでWebサイトを無料で入手する方法が他にもあります。試すことができる2つのオプションは次のとおりです。

暗号化しましょう

サーバーを制御できる場合は、Let'sEncryptを使用してサイトにHTTPSをすばやく展開できます。3か月間有効で、自動的に更新できる無料のSSL証明書を提供します。

サーバーにアクセスできない場合でも、Webホストに確認してください。一部のホストでは、シェルアクセスを提供せずにLet's EncryptSSLを使用できます。

AmazonAWS証明書マネージャー

アマゾンはまた、アマゾンウェブサービス(AWS)インフラストラクチャ上で顧客のSSL証明書を発行し、自動的に更新します。そうすれば、CloudfrontなどのAWSリソースを使用している場合、サイトでHTTPSを設定して忘れることができます。

WebサイトにHTTPSを実装する方法に関係なく、最も重要なことは、ユーザーが提供するセキュリティ上の利点を享受し、ブラウザのいくつかの優れた機能を見逃さないように、できるだけ早くセットアップを行うことです。より良いWebエクスペリエンスを作成します。

あなたがこの記事が好きなら、それを読むことから利益を得るかもしれない他の人と共有してください。ちなみに、ウェブ開発に関する記事については、freshman.techの私のブログをチェックしてください。読んでくれてありがとう。