MENU

(記事整理中)オリジンサーバー証明書を設定してHTTPS通信をフル暗号化した話

目次

1. オリジンサーバーとは?

オリジンサーバーとは、ウェブサイトやアプリケーションの「元データ(オリジン)」を保管し、ユーザーからのリクエストに応じてそのデータを提供するサーバーのことです。
なので、Google CloudやAWSなどで作成したVMインスタンス(仮想マシン)がオリジンサーバーに該当します。


2. HTTPS通信とCloudflareの役割

ウェブサイトの通信を暗号化するために、HTTPS(SSL/TLS)が使われます。HTTPS通信では、データが暗号化されるため、通信途中で悪意のある第三者にデータが盗まれたり改ざんされたりするリスクを軽減できます。

Cloudflareは、CDN(コンテンツ配信ネットワーク)サービスとして以下の役割を果たします:

  1. **ユーザー(ブラウザ)とCloudflare間の通信を暗号化(HTTPS化)**し、セキュリティを向上させます。
  2. オリジンサーバーの負荷を軽減するために、データをキャッシュして効率的に配信します。

ただし、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)
ユーザー(ブラウザ)⇔CloudflareHTTPS(暗号化済み)HTTPS(暗号化済み)
Cloudflare⇔オリジンサーバーHTTP(暗号化されていない)HTTPS(暗号化済み)

7. この設定によるメリット

(1) セキュリティの向上

Cloudflare⇔オリジンサーバー間の通信も暗号化されたため、盗聴や改ざんのリスクがなくなりました。

(2) 信頼性の向上

Cloudflareがオリジンサーバーの証明書を検証するため、通信の信頼性が向上しました。

(3) SEOの改善

GoogleはHTTPSを使用しているウェブサイトを優先的に評価するため、検索エンジン最適化(SEO)にもプラスの影響があります。


1. 前提条件

以下の環境を前提に進めます:

  • Cloudflareを既に利用している(ドメインがCloudflareに登録済み)
  • オリジンサーバー(VMインスタンスなど)でウェブサーバー(NGINXまたはApache)が動作している
  • サーバーにSSHでアクセスできる

2. 作業の流れ

  1. Cloudflareでオリジンサーバー証明書を発行する
  2. オリジンサーバーに証明書をインストールする
  3. ウェブサーバー(NGINXまたはApache)の設定を変更する
  4. CloudflareのSSL/TLSモードを「フル厳格」に変更する
  5. 動作確認を行う

3. 手順詳細

ステップ1:Cloudflareでオリジンサーバー証明書を発行する

  1. Cloudflareのダッシュボードにログインし、対象のドメインを選択します。
  2. 左側のメニューから「SSL/TLS」をクリックします。
  3. 「オリジンサーバー証明書」タブを選択します。
  4. 「証明書を作成」をクリックします。
  5. 以下の情報を入力します:
    • 有効期限:15年(デフォルトのままでOK)
    • ホスト名*.example.com(ワイルドカード)または特定のサブドメイン(例:example.com
  6. 「次へ」をクリックすると、次の2つが表示されます:
    • 証明書(Certificate)
    • 秘密鍵(Private Key)
  7. 証明書と秘密鍵をコピーして安全な場所に保存します(後でオリジンサーバーに設定します)。

ステップ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モードを「フル厳格」に変更する

  1. Cloudflareのダッシュボードで対象のドメインを選択します。
  2. 左側のメニューから「SSL/TLS」をクリックします。
  3. 「SSL/TLSモード」を「フル厳格」に変更します。

ステップ5:動作確認を行う

  1. ブラウザでウェブサイトにアクセスし、HTTPS通信が正常に動作していることを確認します。
  2. SSL/TLSの動作確認ツール(例:SSL LabsのSSL Test)を使って、SSL設定が正しいかチェックします。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次