1. オリジンサーバーとは?
オリジンサーバーとは、ウェブサイトやアプリケーションの「元データ(オリジン)」を保管し、ユーザーからのリクエストに応じてそのデータを提供するサーバーのことです。
なので、Google CloudやAWSなどで作成したVMインスタンス(仮想マシン)がオリジンサーバーに該当します。
2. HTTPS通信とCloudflareの役割
ウェブサイトの通信を暗号化するために、HTTPS(SSL/TLS)が使われます。HTTPS通信では、データが暗号化されるため、通信途中で悪意のある第三者にデータが盗まれたり改ざんされたりするリスクを軽減できます。
Cloudflareは、CDN(コンテンツ配信ネットワーク)サービスとして以下の役割を果たします:
- **ユーザー(ブラウザ)とCloudflare間の通信を暗号化(HTTPS化)**し、セキュリティを向上させます。
- オリジンサーバーの負荷を軽減するために、データをキャッシュして効率的に配信します。
ただし、Cloudflareを使用しても、Cloudflare⇔オリジンサーバー間の通信が暗号化されていない場合、セキュリティ上の問題が残ります。
3. 設定前の状態(フレキシブルSSLモード)
以前の設定では、Cloudflareの「フレキシブルSSL」モードを使用していました。このモードでは、以下のような通信が行われます:
- ユーザー(ブラウザ)⇔Cloudflare間:HTTPS通信(暗号化済み)
- Cloudflare⇔オリジンサーバー間:HTTP通信(暗号化されていない)
この状態では、ユーザーから見るとウェブサイトは安全に見えます(ブラウザに「鍵アイコン」が表示されるため)。しかし、実際にはCloudflare⇔オリジンサーバー間の通信が暗号化されていないため、途中でデータが盗まれたり改ざんされたりするリスクがあります。
4. 今回の作業内容
今回、Cloudflareの「オリジンサーバー証明書」を導入し、Cloudflare⇔オリジンサーバー間の通信をHTTPSで暗号化しました。主な作業内容は以下の通りです:
(1) オリジンサーバー証明書を発行
Cloudflareの管理画面から、オリジンサーバー専用のSSL証明書を発行しました。この証明書はCloudflare⇔オリジンサーバー間の通信を暗号化するために使用されます。
(2) オリジンサーバーに証明書を設定
発行した証明書をオリジンサーバー(VMインスタンス)にインストールし、NGINXの設定を更新しました。
(3) CloudflareのSSLモードを「フル厳格」に変更
CloudflareのSSL/TLS設定を「フル厳格」に変更しました。このモードでは、Cloudflareがオリジンサーバーの証明書を検証し、信頼できる証明書である場合のみ通信を許可します。
5. 設定後の状態(フル厳格SSLモード)
設定後は、以下のようにすべての通信がHTTPSで暗号化されました:
- ユーザー(ブラウザ)⇔Cloudflare間:HTTPS通信(暗号化済み)
- Cloudflare⇔オリジンサーバー間:HTTPS通信(暗号化済み)
これにより、ウェブサイト全体の通信が安全になり、セキュリティが大幅に向上しました。
6. 設定前後の違い
通信区間 | 設定前(フレキシブルSSL) | 設定後(フル厳格SSL) |
---|---|---|
ユーザー(ブラウザ)⇔Cloudflare | HTTPS(暗号化済み) | HTTPS(暗号化済み) |
Cloudflare⇔オリジンサーバー | HTTP(暗号化されていない) | HTTPS(暗号化済み) |
7. この設定によるメリット
(1) セキュリティの向上
Cloudflare⇔オリジンサーバー間の通信も暗号化されたため、盗聴や改ざんのリスクがなくなりました。
(2) 信頼性の向上
Cloudflareがオリジンサーバーの証明書を検証するため、通信の信頼性が向上しました。
(3) SEOの改善
GoogleはHTTPSを使用しているウェブサイトを優先的に評価するため、検索エンジン最適化(SEO)にもプラスの影響があります。
1. 前提条件
以下の環境を前提に進めます:
- Cloudflareを既に利用している(ドメインがCloudflareに登録済み)
- オリジンサーバー(VMインスタンスなど)でウェブサーバー(NGINXまたはApache)が動作している
- サーバーにSSHでアクセスできる
2. 作業の流れ
- Cloudflareでオリジンサーバー証明書を発行する
- オリジンサーバーに証明書をインストールする
- ウェブサーバー(NGINXまたはApache)の設定を変更する
- CloudflareのSSL/TLSモードを「フル厳格」に変更する
- 動作確認を行う
3. 手順詳細
ステップ1:Cloudflareでオリジンサーバー証明書を発行する
- Cloudflareのダッシュボードにログインし、対象のドメインを選択します。
- 左側のメニューから「SSL/TLS」をクリックします。
- 「オリジンサーバー証明書」タブを選択します。
- 「証明書を作成」をクリックします。
- 以下の情報を入力します:
- 有効期限:15年(デフォルトのままでOK)
- ホスト名:
*.example.com
(ワイルドカード)または特定のサブドメイン(例:example.com
)
- 「次へ」をクリックすると、次の2つが表示されます:
- 証明書(Certificate)
- 秘密鍵(Private Key)
- 証明書と秘密鍵をコピーして安全な場所に保存します(後でオリジンサーバーに設定します)。
ステップ2:オリジンサーバーに証明書をインストールする
(1) サーバーにSSHでログイン
ターミナル(またはSSHクライアント)を使って、オリジンサーバーにログインします。
bashコピーssh username@your-server-ip
(2) 証明書と秘密鍵を保存する
以下のディレクトリに証明書と秘密鍵を保存します(ディレクトリは任意ですが、一般的には/etc/ssl/
を使用します)。
bashコピーsudo nano /etc/ssl/cloudflare-origin.pem
- **証明書(Certificate)**を貼り付けて保存します。
bashコピーsudo nano /etc/ssl/cloudflare-origin-key.pem
- **秘密鍵(Private Key)**を貼り付けて保存します。
(3) ファイルの権限を設定
保存した証明書と秘密鍵のファイルに適切な権限を設定します。
bashコピーsudo chmod 600 /etc/ssl/cloudflare-origin-key.pem
sudo chmod 644 /etc/ssl/cloudflare-origin.pem
ステップ3:ウェブサーバー(NGINXまたはApache)の設定を変更する
(1) NGINXの場合
NGINXの設定ファイルを編集します(通常は/etc/nginx/sites-available/default
や/etc/nginx/conf.d/your-site.conf
)。
bashコピーsudo nano /etc/nginx/sites-available/default
以下のようにHTTPS用の設定を追加または修正します:
nginxコピーserver {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/cloudflare-origin.pem;
ssl_certificate_key /etc/ssl/cloudflare-origin-key.pem;
# セキュリティ強化のための追加設定
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html index.htm;
}
NGINXの設定をテストして、エラーがないことを確認します:
bashコピーsudo nginx -t
問題がなければ、NGINXを再起動します:
bashコピーsudo systemctl restart nginx
(2) Apacheの場合
ApacheのSSL設定ファイルを編集します(通常は/etc/apache2/sites-available/default-ssl.conf
)。
bashコピーsudo nano /etc/apache2/sites-available/default-ssl.conf
以下のように証明書のパスを追加または修正します:
apacheコピー<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/cloudflare-origin.pem
SSLCertificateKeyFile /etc/ssl/cloudflare-origin-key.pem
DocumentRoot /var/www/html
</VirtualHost>
Apacheの設定をテストして、エラーがないことを確認します:
bashコピーsudo apachectl configtest
問題がなければ、Apacheを再起動します:
bashコピーsudo systemctl restart apache2
ステップ4:CloudflareのSSL/TLSモードを「フル厳格」に変更する
- Cloudflareのダッシュボードで対象のドメインを選択します。
- 左側のメニューから「SSL/TLS」をクリックします。
- 「SSL/TLSモード」を「フル厳格」に変更します。
ステップ5:動作確認を行う
- ブラウザでウェブサイトにアクセスし、HTTPS通信が正常に動作していることを確認します。
- SSL/TLSの動作確認ツール(例:SSL LabsのSSL Test)を使って、SSL設定が正しいかチェックします。
コメント