HTTPSリダイレクトの必要性とクローラーについて調べてみた

## はじめに
個人開発で自分のウェブアプリへの通信形式をHTTPSにしようとAWSのCloudFrontを設定している際に「そもそも大多数のユーザーはわざわざHTTPを指定してアクセスすることなどないのではないか？HTTPSリダイレクトは本当に必要なのか？」という疑問が浮かんだ。また、調べる過程で出てきた検索エンジンのクローラーとは何なのか？どういう動きをし、どのようにサイトのインデックスを管理しているのか？ということについて調べた。

初心者ながら調べてみた内容を整理してみる。

## 1. なぜHTTPからHTTPSへのリダイレクトが必要なのか

### 1-1. そもそもHTTPSとは？
HTTPS（HyperText Transfer Protocol Secure）は、HTTPにTLS（旧SSL）を組み合わせた通信プロトコルであり、

- **通信の暗号化**（盗聴を防ぐ）
- **データの整合性**（改ざんを防ぐ）
- **サーバーの認証**（なりすましを防ぐ）

といった機能を提供する。

現在、Googleをはじめとする検索エンジンは、HTTPSのサイトを優遇するアルゴリズムを導入しており、HTTPSで運営されていないサイトはSEO的に不利になる可能性がある。

### 1-2. HTTPSリダイレクトを設定しないと何が問題か？

「ユーザーは基本的にHTTPSでアクセスするのでは？」と思うかもしれない。しかし、以下のような理由でHTTP経由のアクセスが発生する可能性がある。

| ケース | 理由 | 影響 |
|--------|------|------|
| ユーザーの手入力 | `https://` まで入力しない場合がある | HTTPでアクセスする可能性 |
| 外部サイトのリンク | 他のサイトがHTTPのリンクを貼っている | HTTP経由で訪問するユーザーが発生 |
| イントラネット環境 | 企業内の古いネットワークではHTTPが優先されていることがある | HTTPSがブロックされる場合がある |
| プロキシ環境 | 一部のプロキシサーバーがHTTPSを適切に処理できない | HTTPリクエストが発生する可能性 |
| 検索エンジンのクローラー | HTTPとHTTPSの両方をチェックする | インデックスに影響 |

イントラネットとは、企業や組織内で使用される内部ネットワークのことで、外部のインターネットとは切り離された環境で運用されることが多い。なぜイントラネット環境ではHTTPが優先されることがあるのか？ それは、古いネットワーク機器やセキュリティポリシーの影響でHTTPS通信がブロックされるケースがあるためだ。このような環境では、HTTPリクエストが発生する可能性があるため、HTTPSリダイレクトを適切に設定することが重要になる。

リダイレクトを設定しない場合、HTTPでアクセスされた際に「403 Forbidden」などのエラーが発生する可能性がある。また、検索エンジンがHTTPとHTTPSの両方を認識してしまい、SEO評価が分散する可能性もある。

## 2. クローラーとHTTPSリダイレクト

### 2-1. クローラーとは？
検索エンジンのクローラー（Crawler）は、Webページを自動巡回し、インデックスを作成するプログラムである。

| クローラー | 検索エンジン |
|-----------|-------------|
| Googlebot | Google |
| Bingbot   | Bing |
| YandexBot | Yandex |
| BaiduSpider | Baidu |

クローラーの主な役割は以下の3つ。
1. **新しいページを発見する** - 他のサイトのリンクやサイトマップをたどる。
2. **ページの内容を収集する** - HTMLやテキスト、リンク情報を取得。
3. **検索エンジンのデータベースに登録する** - 検索結果に表示するためのインデックス化。

### 2-2. クローラーはなぜHTTPにアクセスするのか？

検索エンジンのクローラーは、サイトのすべてのバージョンをチェックするため、`http://example.com` と `https://example.com` の **両方にアクセス** する。

適切にリダイレクトが設定されていないと以下の問題が発生する。

| 問題 | 説明 |
|------|------|
| HTTPページがインデックスされる | 検索エンジンがHTTPとHTTPSの両方を認識し、重複コンテンツの扱いになる可能性がある |
| SEO評価の分散 | HTTPとHTTPSの両方が検索エンジンに登録されることで、評価が分散する可能性 |
| クローラーのリソース消費 | 不要なHTTPチェックにより、クローラーのリソースが無駄になる |

この問題を防ぐためには、HTTPからHTTPSへのリダイレクトを設定し、統一されたURLでサイトがインデックスされるようにすることが重要になる。

## 3. CloudFrontを利用したHTTPSリダイレクト設定
AWS CloudFrontを使用している場合、「Redirect HTTP to HTTPS」を設定することで、すべてのHTTPリクエストをHTTPSに統一できる。

### 3-1. 設定手順
1. **AWSマネジメントコンソールでCloudFrontを開く**
2. **対象のディストリビューションを選択**
3. **「Behaviors（ビヘイビア）」タブを開く**
4. **デフォルトビヘイビアを編集**
5. **「Viewer Protocol Policy」を「Redirect HTTP to HTTPS」に変更**
6. **変更を保存し、適用を待つ（最大20分）**

この設定を行うことで、HTTPアクセスが自動的にHTTPSへリダイレクトされ、ユーザーやクローラーが正しくHTTPSバージョンのサイトを利用できる。

## 4. まとめ

- HTTPSはWebセキュリティの標準であり、すべてのサイトで推奨される。
- ユーザーは意識してHTTPSを利用することが多いが、意図せずHTTPでアクセスするケースがある。
- イントラネットやプロキシ環境では、HTTPS通信がブロックされる場合があり、HTTPリクエストが発生する可能性がある。
- 検索エンジンのクローラーもHTTPでアクセスすることがあり、リダイレクトがないとSEOに悪影響を与える可能性がある。
- AWS CloudFrontを利用する場合、「Redirect HTTP to HTTPS」を設定することで、すべてのリクエストをHTTPSに統一できる。

個人開発を進める中で、HTTPSリダイレクトの重要性について考える機会があったので、調べたことをまとめてみた。今後、より詳しいセキュリティ設定についても学んでいきたい。



## 5. 参考サイト

### HTTPSリダイレクトの必要性と設定方法
- [TMS Partners株式会社の解説記事](https://tms-partners.com/12409/?utm_source=chatgpt.com) - HTTPからHTTPSへのリダイレクトの必要性や設定方法について解説。
- [キーワードファインダーの解説記事](https://keywordfinder.jp/blog/http-https-redirect/?utm_source=chatgpt.com) - HTTPをHTTPSにリダイレクトする方法や注意点について詳しく説明。

- [Amazon公式ドキュメント](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html?utm_source=chatgpt.com) - CloudFrontでHTTPSを要求する方法や設定手順を解説。
- [エンジニアになりたいブログの解説記事](https://engineer-ninaritai.com/s3-cloudfront-redirect/?utm_source=chatgpt.com) - S3とCloudFrontを使用してHTTPSでリダイレクトする方法を具体的に解説。