HTTPSがHTTPよりもはるかに安全であることは、周知の事実です。ですが、もし「HSTS missing from HTTPS server(HTTPSサーバーからHSTSが欠落している)」というエラーメッセージが表示されたら、このプロトコルによってサイトが危険に晒されている可能性があります。
この深刻なセキュリティ上の問題は解決することができますので、ご安心を。このエラーメッセージに遭遇したことがなくても、HTTPからHTTPS にリダイレクトするサイトはすべてこの問題に脆弱なため、この欠陥にはあらかじめ対処しておくのが賢明です。
この記事では、「HSTS Missing From HTTPS Server」エラーとはどのようなものか、HTTPSリダイレクトを使用しているウェブサイトはなぜ危険なのかをご説明します。それから、この問題の解決方法とハッキング対策を5つの簡単なステップでご紹介します。
「HSTS Missing From HTTPS Server」エラーについての解決方法について動画での解説もご用意しています。
「HSTS Missing From HTTPS Server」エラーについて
訪問者の安全確保のため、HTTPSリダイレクトを行うサイトは珍しくありません。このリダイレクトは、訪問者をHTTP版ウェブサイトからHTTPS版ウェブサイトへ転送します。
ユーザーが、ブラウザのアドレスバーにHTTPを入力したり、HTTPバージョンのリンクを開くことがあります。このような場合、リダイレクトは悪意のある第三者が訪問者のデータを盗み出すことを阻止してくれます。
とはいえ、完璧なテクノロジーなど存在しません。サイトでHTTPSリダイレクトを使用している場合は、SSL(セキュア・ソケッツ・レイヤー)ストリッピングとして知られる、中間者(MITM)攻撃の影響を受ける恐れがあります。この攻撃の一環として、ハッカーはリダイレクト要求をブロックし、ブラウザがHTTPSプロトコルでサイトを読み込むのを阻止します。
別の可能性として、攻撃者がリダイレクトを傍受し、訪問者をサイトのクローン版に転送することも考えられます。この時点で、ハッカーは、パスワードや支払い情報などのユーザーが共有するあらゆるデータを盗むことができてしまいます。中には、訪問者を騙し、悪質なソフトウェアをダウンロードさせようとするハッカーが潜んでいるかもしれません。
また、ハッカーは安全でない接続を介してセッションCookieを盗むことも可能です。これは、セッションハイジャックとして知られる攻撃です。このCookieには、ユーザー名、パスワード、さらにはクレジットカード情報など、多くの個人情報が含まれている場合があります。
このような攻撃から訪問者を守るために、HTTP Strict Transport Security(HSTS)を有効にすることをおすすめします。このプロトコルは、ブラウザに直接受けた要求を無視させ、HTTPSでサイトを読み込むことを強制します。
HSTSプロトコル(とその使用理由)
HSTSはサーバーディレクティブであり、ウェブセキュリティを強化する施策の1つです。インターネット技術タスクフォース(IETF)がRFC6797で規定したHSTSは、ユーザーエージェントやウェブブラウザがHTTPSで動作するサイトへの接続処理方法の規則を定めています。
セキュリティ検査で、サイトに「HSTS」または「HTTP Strict Transport Security」ヘッダーが欠落していると診断されることがあります。この診断は、サイトでHSTSが使用されていないため、HTTPSリダイレクトが訪問者を危険にさらしている可能性があることを意味します。
この脆弱性は、中リスクに分類されますが、この脆弱性は非常に一般的であり、攻撃者にとっては格好の標的となります。このエラーに遭遇したら、必ず対処しましょう。
サーバーにHSTSセキュリティヘッダーを追加すると、サイトをHTTPSプロトコルで読み込むように強制することが可能です。これにより、セッションハイジャックやプロトコル攻撃からサイトを保護することができます。また、読み込み手順からリダイレクトを取り除くことになるため、サイトの読み込みが速くなるかもしれません。
このエラーに遭遇したことがなくても、HSTSについて不安を感じられている方もいるでしょう。HSTSが有効かどうかわからない場合は、Security Headersなどのツールを使用して、サイトを解析することができます。手順は、ウェブサイトのURLを入力して、「Scan(解析)」をクリックするだけです。
Security Headersが、入力されたサイトを解析し、適用されたヘッダーをすべて「Headers(ヘッダー)」セクションに表示します。「Strict-Transport-Security」が表示されている場合、サイトは保護されているということになります。この表示がない場合は、いくつか行うべき作業があります。
「HSTS Missing From HTTPS Server」エラーの解決方法(5ステップ)
HSTSの脆弱性は、ハッカーにとって、データの窃盗や、訪問者を騙し危険な行動を誘導する絶好の機会です。この章では、HSTSを有効にして、サイトの安全を確保する方法をご説明します。
ステップ1. 手動バックアップを作成する
HSTSを有効にする作業は、ウェブサイトに大きな影響を与えます。そのため、作業を始める前にオンデマンドバックアップの作成をおすすめします。バックアップをとることで、HSTSを有効にする際、万が一何かしらの問題が発生した場合でも、サイトを復元することができます。
Kinstaでは、毎日WordPressの自動バックアップが行われますが、大きな変更を加える前には、念のため手動でバックアップを作成しておくのがいいでしょう。作成方法は、MyKinstaにログインし、「WordPressサイト」>(サイト名)>「バックアップ」に移動します。
次に、「手動」タブを選択し、「今すぐバックアップ」をクリックします。
その後、作成したバックアップに簡単なメモが追加でき、MyKinsta内で作成したバックアップを見分けることができるようになります。
最後に、「バックアップを作成」をクリックすると、バックアップが作成され、ダッシュボードに追加されます。
ステップ2. HTTP から HTTPS へのリダイレクトを設定する
HSTSを有効にする前に、ウェブサイトにSSL証明書をデプロイしなくてはなりません。Kinstaでは、Cloudflareの統合により、検証済みのすべてのドメインが自動的に保護されます。これには、ワイルドカードをサポートする無料のSSL証明書も含まれますので、特に独自の証明書を必要としない限りは、手動で設定する必要はありません。
次に、(まだ設定されていない場合は)HTTPからHTTPSへのリダイレクトを設定します。このリダイレクトを作成するには、MyKinstaにログインし、「WordPressサイト」>(サイト名)>「ツール」に移動します。
「HTTPSリダイレクト」の「利用する」ボタンをクリックします。これで、プライマリドメインにリダイレクトするか、別のドメインを使用するかを選択できます。この選択を行った後、「リダイレクトを設定」をクリックします。
サードパーティのプロキシを使用したり、独自のHTTPSルールを設定している場合は、HTTPSを強制すると、エラーや、正常でない動作などが見られる場合があります。このような問題が発生した場合には、いつでもKinstaのサポートチームまでご連絡ください。
Nginxを利用している場合、HTTPトラフィックをすべてHTTPSにリダイレクトすることができます。Nginxの設定ファイルに以下のコードを追加してください。
server {
listen 80;
server_name domain.com www.domain.com;
return 301 https://domain.com$request_uri;
}
また、Kinstaのお客様であれば、私たちがこの変更を行うことも可能です。カスタマーサポートへのお問い合わせから、どのドメインを指定したいかお知らせください。専門チームがご対応させていただきます。
ステップ3. HSTSヘッダーを追加する
HSTSヘッダーに適用できるディレクティブやセキュリティレベルには様々な種類がありますが、サーバーがHTTPSで配信する時間を秒単位で定義するmax-ageディレクティブの追加をおすすめします。このディレクティブは、HTTPでのみ配信可能なページやサブドメインへのアクセスを遮断します。
Apacheサーバーを使用している場合には、仮想ホストファイルを開きます。その後、以下のコードを追加してください。
Header always set Strict-Transport-Security max-age=31536000
Kinstaは、Nginxサーバーを使用しています。Kinstaのお客様であれば、Nginxの設定ファイルに以下のコードを追加してください。
add_header Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
例によって、この作業も私たちにお任せいただくことが可能です。カスタマーサポートにご自身のサイトへのHSTSヘッダーの追加をリクエストしてください。専門チームがNginxファイルに必要な変更を加えます。
ステップ4. HSTSプリロードリストにサイトを登録する
HSTSには、1つの大きな欠点があります。ブラウザがHSTSヘッダーを少なくとも一度検出しなくては、有効にならないという点です。つまり、訪問者がまず一度、HTTPからHTTPSへのリダイレクトを行わなくてはいけないということです。これを実行するまでは、プロトコル攻撃に対して脆弱な状態になります。
このセキュリティの欠点を補うために、GoogleがHSTSプリロードリストを作成しています。これは、HSTSをサポートする全ウェブサイトをリスト化し、Chromeにハードコードするものです。このリストを追加すると、訪問者は最初のHTTPSリダイレクトを実行する必要がなくなります。
主要なインターネットブラウザのほとんどは、Chromeのリストを基にした独自のHSTSプリロードリストを持っています。このリストに掲載されるためには、サイトが提出基準を満たさなくてはいけません。ですが、Kinstaはすべての提出基準をクリアしているため、あなたのサイトをHSTSプリロードリストに登録することができます。
このリストに掲載されると、検索エンジン最適化(SEO)ツールによっては、307リダイレクトについての警告が表示される場合があります。このリダイレクトは、安全でないHTTPプロトコルを使って誰かがサイトにアクセスしようとしたときに発生します。これは、恒久的301リダイレクトではなく、307リダイレクトを誘発するものです。これについて不安な場合は、httpstatusを使用してサイトを解析し、301リダイレクトが発生しているかどうかを確認することができます。
ステップ5.「Strict-Transport-Security」ヘッダーを検証する
HSTSヘッダーの追加後は、ヘッダーが正しく機能しているかどうかテストしましょう。ブラウザに組み込まれたウェブツールを使って行うことが可能です。
手順は、選択したウェブブラウザによって異なります。これを実行するには、GoogleのChrome DevToolを開き、テストしたいウェブページに移動します。次に、任意の空白の領域をクリックし、「検証」を選択します。
続いてのパネルで、「ネットワーク」>「ヘッダー」に移動し、以下の内容が含まれていることを確認します。
strict-transport-security: max-age=31536000
別の方法として、上記で紹介したSecurity Headersを使ってサイトを解析することも可能です。先ほどと同様、ウェブサイトのURLを入力し、「Scan(解析)」をクリックします。すると、strict-transport-securityタグを含むセキュリティレポートが表示されます。レポートの中にこのタグがあれば、HSTSヘッダーが正しく設定され、HTTPSリダイレクトへの問題が無事解決されたことになります。
まとめ
HTTPからHTTPSへのリダイレクトは、セキュリティ対策に最も効果的な方法です。しかし、完璧なテクノロジーなど存在せず、このリダイレクトにより、サイトがSSL攻撃を受けやすくなる恐れもあります。
これを踏まえて、「HSTS Missing From HTTPS Server」のエラーの解決方法をおさらいしておきましょう。
- サイトの手動バックアップを作成する
- HTTPからHTTPSへのリダイレクトを設定する
- HSTSヘッダーを追加する
- HSTSプリロードリストにサイトを登録する
- 「strict-transport-security」ヘッダーを検証する
エラーメッセージの解決は、手間がかかり、イライラする作業。Kinstaのお客様は、お気軽にチャットサポートをご利用ください。プランを問わず、24時間年中無休でご利用いただけます。Kinstaのエンジニアによるサポートを活用することで、大事な事業に専念することができます。