QNAPのDockerでCloudflare Origin CA証明書を設定する方法【Nginx対応】

QNAPのDockerでCloudflare Origin CA証明書を設定する方法【Nginx対応】

はじめに

QNAPのContainerStationでWordPressをDockerで運用し、Cloudflare Tunnelで公開する場合、Cloudflare Origin CA証明書を使うことでCloudflareとオリジンサーバー(Nginx)間の通信を暗号化できます。

この記事では、Cloudflare Origin CA証明書の発行からNASへの配置、Nginxへの設定方法まで解説します。


Cloudflare Origin CA証明書とは

Cloudflareが無料で発行するSSL証明書です。

通常のSSL証明書との違い:

Cloudflare Origin CALet’s Encrypt通常のSSL証明書
価格無料無料有料
有効期限最大15年90日1〜2年
自動更新不要必要必要
信頼範囲Cloudflare経由のみすべてすべて

重要な制限 Cloudflare Origin CA証明書はCloudflare経由のアクセスに対してのみ有効です。 Cloudflareを通さずに直接サーバーにアクセスすると証明書エラーになります。 Cloudflare Tunnelで運用している場合は問題ありません。


SSL/TLSモードの選び方

Cloudflareダッシュボードには4つのSSL/TLSモードがあります。

モード説明推奨
オフ暗号化なし非推奨
フレキシブルブラウザ↔Cloudflare間のみ暗号化非推奨
フル全区間暗号化(証明書検証なし)
フル(厳密)全区間暗号化(証明書検証あり)推奨

Cloudflare Origin CA証明書を使う場合は**フル(厳密)**を選択します。


環境

  • QNAP NAS(ContainerStation インストール済み)
  • Cloudflareアカウント(無料プラン)
  • Nginx リバースプロキシ(Dockerコンテナ)
  • Cloudflare Tunnel で公開済み

ファイル構成

shared/
└── certs/
    ├── origin_ca.pem  ← Cloudflare Origin CA ルート証明書
    ├── origin.crt     ← サーバー証明書(Cloudflareで発行)
    └── origin.key     ← 秘密鍵(Cloudflareで発行)

Step 1:SSL/TLSモードをフル(厳密)に設定する

  1. dash.cloudflare.com にログイン
  2. 対象ドメインを選択
  3. 左メニューの SSL/TLS概要 をクリック
  4. 「設定」 をクリック
  5. 「フル(厳密)」 を選択

Step 2:Cloudflare Origin CA証明書を発行する

発行画面を開く

  1. 左メニューの SSL/TLSオリジンサーバー をクリック
  2. 「証明書を作成」 をクリック

【画像:オリジンサーバー画面(証明書を作成ボタンがある画面)】

証明書の設定

以下の設定で証明書を作成します:

キーの生成方法:

  • CloudflareでプライベートキーとCSRを生成する(デフォルト)を選択
  • プライベートキーの種類:RSA (2048)

ホスト名: デフォルトで以下の2つが自動入力されます:

  • *.your-domain.com(ワイルドカード:サブドメインすべてに対応)
  • your-domain.com(ルートドメイン)

ワイルドカード証明書について *.your-domain.comを含めることでwww.your-domain.comなどのサブドメインも1つの証明書でカバーできます。

証明書の有効期限:

  • デフォルト:15年
  • 最大15年まで選択可能

「作成」 をクリックします。


Step 3:証明書と秘密鍵をダウンロードする

作成後に証明書(.crt)と秘密鍵(.key)が表示されます。

この画面は一度しか表示されません 秘密鍵は作成時にしか確認できません。必ずその場でコピーして保存してください。 画面を閉じると秘密鍵は二度と表示されません。

以下の2つをテキストファイルとして保存します:

  • 証明書origin.crtとして保存
  • 秘密鍵origin.keyとして保存

Step 4:Cloudflare Origin CA ルート証明書をダウンロードする

Nginxの設定でルート証明書(origin_ca.pem)が必要な場合があります。

以下のURLからダウンロードできます:

https://developers.cloudflare.com/ssl/static/origin_ca_rsa_root.pem

ファイル名をorigin_ca.pemとして保存します。


Step 5:証明書をNASに配置する

ダウンロードした3つのファイルをNASの以下のフォルダに配置します:

/share/CACHEDEV4_DATA/docker/shared/certs/
├── origin_ca.pem
├── origin.crt
└── origin.key

ファイルの確認:

ls -la /share/CACHEDEV4_DATA/docker/shared/certs/

opensslコマンドで証明書の詳細を確認できます:

openssl x509 -in /share/CACHEDEV4_DATA/docker/shared/certs/origin.crt -noout -dates -subject

実行結果の例:

notBefore=May  8 02:36:00 2025 GMT
notAfter=May  4 02:36:00 2040 GMT
subject=O = "CloudFlare, Inc.", OU = CloudFlare Origin CA, CN = CloudFlare Origin Certificate

Step 6:Nginxの設定に証明書を紐付ける

Nginxのサイト設定ファイル(conf.d/your-site.conf)に証明書のパスを指定します。

server {
    listen 443 ssl;
    server_name your-domain.com;

    ssl_certificate     /etc/certs/origin.crt;
    ssl_certificate_key /etc/certs/origin.key;

    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://wordpress_your_site;
        ...
    }
}

docker-compose.ymlでのマウント設定:

nginx_reverse_proxy:
  volumes:
    - ./certs:/etc/certs:ro  ← certs フォルダをコンテナにマウント

/etc/certs/にマウントすることで、Nginx設定ファイルから/etc/certs/origin.crtとしてアクセスできます。


Step 7:複数ドメインで1つの証明書を使う

複数のサイトを運用している場合、すべてのサイトで同じ証明書ファイルを参照できます。

# your-site1.conf
ssl_certificate     /etc/certs/origin.crt;
ssl_certificate_key /etc/certs/origin.key;

# your-site2.conf(同じファイルを参照)
ssl_certificate     /etc/certs/origin.crt;
ssl_certificate_key /etc/certs/origin.key;

なぜ複数サイトで使えるのか Cloudflare Origin CA証明書はCloudflare経由のアクセスに対して有効で、ドメインの検証はCloudflare側で行われます。 オリジンサーバー(Nginx)側では証明書の存在と有効期限のみ確認されるため、複数サイトで同じ証明書を使用できます。 ただし厳密な運用では、サイトごとに証明書を発行することを推奨。


Step 8:Nginxを再起動して確認する

証明書を配置したらNginxを再起動します:

cd /share/CACHEDEV4_DATA/docker/shared
docker compose up -d --force-recreate nginx_reverse_proxy

ブラウザでサイトにアクセスして鍵マークが表示されれば設定完了です。


証明書の有効期限と更新について

Cloudflare Origin CA証明書は最大15年有効です。

項目内容
発行日証明書作成日
有効期限最大15年後(例:2025年発行→2040年まで有効)
自動更新なし(手動更新が必要)
更新方法新しい証明書を発行してファイルを差し替え

更新のタイミング 有効期限が近づいたらCloudflareダッシュボードから新しい証明書を発行してorigin.crtorigin.keyを差し替えます。 Nginxを再起動すれば新しい証明書が適用されます。


まとめ

Cloudflare Origin CA証明書の設定手順をまとめます:

  1. SSL/TLSモードを**フル(厳密)**に設定する
  2. Cloudflareダッシュボードで証明書を発行する
  3. 証明書(origin.crt)と秘密鍵(origin.key)を保存する
  4. NASのcerts/フォルダに配置する
  5. Nginxの設定ファイルで証明書のパスを指定する
  6. docker-compose.ymlでcertsフォルダをマウントする

Cloudflare Origin CA証明書のメリット:

  • 無料・最大15年有効で更新の手間がほぼない
  • Cloudflare Tunnel + Nginxの構成に最適
  • 複数サイトで1つの証明書を流用できる

関連記事