2026年7月28日

2026年7月28日

Cloudflare Origin CA証明書の設定方法|WordPressのサーバーをFull (strict)にする手順

Cloudflareの「Origin CA証明書」は、Cloudflareとオリジンサーバー(WordPressが動いているサーバー)の間の通信を暗号化するための、無料の証明書です。Cloudflareのダッシュボードで発行し、自分のサーバーのApacheやNginxに設定します。

この記事では、Cloudflareを通してWordPressを公開しているサイトで、Origin CA証明書を発行してサーバーに入れ、暗号化モードを「Full (strict)」にするまでを説明します。画面の名称は2026年10月時点のCloudflareのドキュメントに合わせています。

Origin CA証明書の特徴と前提

項目 内容
料金 無料
信頼するのは Cloudflareだけ。ブラウザーは信頼しない
守る区間 Cloudflareとオリジンサーバーの間。ブラウザーとCloudflareの間は、Cloudflareが自動で用意する証明書(Edge証明書)が受け持つ
有効期間 発行時に選ぶ(既定は15年)
期限切れの通知 Cloudflareからは届かない。自分で管理する

ブラウザーが信頼しないため、使えるのはCloudflareのプロキシを通る(DNSレコードが「プロキシ済み」=オレンジ色の雲)ホスト名だけです。プロキシをオフ(グレーの雲)にしたり、Cloudflareを一時停止したりすると、訪問者のブラウザーが直接オリジンサーバーにつながり、NET::ERR_CERT_AUTHORITY_INVALID などの証明書エラーが表示されます。

前提は次のとおりです。

  • ドメインのDNSをCloudflareで管理していて、WordPressのホスト名(example.com、www.example.com)がプロキシ済みになっている
  • サーバーのApacheまたはNginxの設定を自分で編集できる(VPSなど)

Cloudflareの導入そのものは、WordPressにCloudflareを設定する完全ガイドで説明しています。

手順1: Cloudflareで証明書を発行する

  1. Cloudflareのダッシュボードで対象のドメイン(ゾーン)を開き、「SSL/TLS」→「Origin Server」を開きます。
  2. 「Origin Certificates」の「Create Certificate」を選びます。
  3. 「Generate private key and CSR with Cloudflare」を選び、鍵の種類(RSAかECC)を選びます。古いソフトウェアとの互換性を気にするならRSAを選びます。
  4. ホスト名の欄には、既定でドメイン本体(example.com)と1階層のワイルドカード(*.example.com)が入っています。ワイルドカードがカバーするのは1階層だけで、a.b.example.com のような2階層のホスト名には別に指定が要ります。
  5. 有効期間(既定は15年)を選び、作成します。
  6. 「Origin Certificate」と「Private Key」が表示されます。鍵の形式は、Apache・Nginxなら「PEM」のままにします。

秘密鍵(Private Key)は、この画面を閉じると二度と表示されません。 両方の内容をコピーして、次の手順でサーバーに保存するまで画面を閉じないでください。秘密鍵をなくした場合は、証明書を作り直します。

手順2: 証明書と秘密鍵をサーバーに保存する

サーバーにSSHで入り、保存用のディレクトリーを作ります。

sudo mkdir -p /etc/ssl/cloudflare
sudo nano /etc/ssl/cloudflare/example.com.pem   # 「Origin Certificate」の内容を貼り付けて保存
sudo nano /etc/ssl/cloudflare/example.com.key   # 「Private Key」の内容を貼り付けて保存

秘密鍵はroot以外が読めないように権限を絞ります。ApacheもNginxも、起動時にrootで鍵を読み込むので、この権限で動きます。

sudo chown root:root /etc/ssl/cloudflare/example.com.*
sudo chmod 644 /etc/ssl/cloudflare/example.com.pem
sudo chmod 600 /etc/ssl/cloudflare/example.com.key

貼り付けた内容が正しいかを確かめます。2つのコマンドの出力(公開鍵のハッシュ)が一致すれば、証明書と秘密鍵は対になっています。

openssl x509 -in /etc/ssl/cloudflare/example.com.pem -noout -pubkey | openssl sha256
sudo openssl pkey -in /etc/ssl/cloudflare/example.com.key -pubout | openssl sha256

証明書の対象ホスト名と期限も見ておきます。

openssl x509 -in /etc/ssl/cloudflare/example.com.pem -noout -subject -issuer -enddate -ext subjectAltName

手順3: Webサーバーに設定する

Apacheの場合(Ubuntu・Debian)

SSLモジュールを有効にします。

sudo a2enmod ssl

HTTPS用のサイト設定 /etc/apache2/sites-available/example.com-ssl.conf を作ります。DocumentRoot はWordPressを置いたディレクトリーに合わせてください。

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/wordpress

    SSLEngine on
    SSLCertificateFile    /etc/ssl/cloudflare/example.com.pem
    SSLCertificateKeyFile /etc/ssl/cloudflare/example.com.key

    <Directory /var/www/wordpress>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

AllowOverride All は、WordPressのパーマリンクが使う .htaccess を有効にするための設定です。

sudo a2ensite example.com-ssl
sudo apachectl configtest
sudo systemctl reload apache2

Nginxの場合

HTTPSの server ブロックに証明書と秘密鍵を指定します。PHP-FPMのソケットのパスは環境に合わせてください(ls /run/php/ で確認できます)。

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    root /var/www/wordpress;
    index index.php;

    ssl_certificate     /etc/ssl/cloudflare/example.com.pem;
    ssl_certificate_key /etc/ssl/cloudflare/example.com.key;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}
sudo nginx -t
sudo systemctl reload nginx

サーバーのファイアウォールで443番(TCP)が開いていることも確かめます。

手順4: 暗号化モードをFull (strict)にする

Cloudflareのダッシュボードで「SSL/TLS」→「Overview」を開き、暗号化モードを選ぶ画面で「Custom SSL/TLS」を選んで「Full (strict)」にします。既定の「Automatic SSL/TLS」は、Cloudflareがオリジンを調べて安全なモードへ段階的に切り替える方式で、すぐにFull (strict)になるとは限りません。手動で決めたい場合はCustomを選びます。

モード Cloudflareとオリジンの間 Origin CA証明書と組み合わせると
Flexible HTTP(暗号化しない) 証明書を使わない。WordPressでリダイレクトのループが起きやすい
Full HTTPS。証明書の正しさは確かめない 暗号化はされるが、証明書の検証が無い
Full (strict) HTTPS。証明書の正しさを確かめる Origin CA証明書を正しい証明書として受け入れる。この組み合わせにする

Full (strict)では、Cloudflareがオリジンの証明書を検証します。Origin CA証明書はCloudflareが信頼する証明書なので、ホスト名が合っていて期限内であれば検証に通ります。

手順5: 動作を確かめる

Cloudflare経由でサイトを開き、応答のヘッダーを確かめます。server: cloudflare と cf-ray があれば、Cloudflareを通っています。

curl -sI https://example.com/ | grep -iE '^(HTTP|server|cf-ray)'

オリジンサーバーに直接つないで、Origin CA証明書が使われているかも確かめられます。203.0.113.10 はオリジンサーバーのIPアドレスに置き換えてください。発行元(issuer)に「CloudFlare Origin SSL」を含む名前が出れば、Origin CA証明書です。

openssl s_client -connect 203.0.113.10:443 -servername example.com </dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -enddate

最後に、ブラウザーでサイトと管理画面(/wp-admin/)を開き、表示やログインに問題がないことを確かめます。

WordPress側の設定

「設定」→「一般」の「WordPressアドレス (URL)」と「サイトアドレス (URL)」が https:// で始まっていることを確かめます。HTTPのままだった場合のURLの置き換えや混在コンテンツの解消は、WordPressをSSL(HTTPS)化する方法を参考にしてください。

Full (strict)では、CloudflareからオリジンへのアクセスもHTTPSなので、WordPressは通常の設定のままHTTPSでのアクセスだと判断できます。暗号化モードがFlexibleだと、オリジンにはHTTPで届くため、WordPressやプラグインのHTTPSへのリダイレクトとCloudflareの間でループが起き、ERR_TOO_MANY_REDIRECTS になることがあります。Full (strict)にしておけば、この問題は起きません。

注意点

  • 期限の管理: Cloudflareは期限切れの通知を送りません。15年より短い期間を選んだ場合は、期限を記録しておき、期限前に作り直して入れ替えます。
  • プロキシをオフにしない: DNSレコードをグレーの雲にすると、訪問者に証明書エラーが出ます。メールサーバーなど、プロキシを通さないホスト名には、Let's Encryptなどブラウザーが信頼する証明書を使います。
  • 証明書の失効: 「Origin Server」の一覧から証明書を選び「Revoke」で失効できます。失効は取り消せません。使用中の証明書を失効させる場合は、先に新しい証明書を入れておくか、暗号化モードを一時的にFullなどに下げてから行います。
  • ルート証明書が必要なサーバー: サーバーやコントロールパネルによっては、CloudflareのOrigin CAのルート証明書(RSA用・ECC用)の登録を求められることがあります。その場合はCloudflareのドキュメントからダウンロードして登録します。ApacheとNginxを上記の設定で使う場合は不要です。

うまくいかないとき

症状 確かめること
Cloudflareのエラー525(SSL handshake failed) オリジンが443番でHTTPSを受けているか。証明書と秘密鍵のパス、Webサーバーの再読み込み
Cloudflareのエラー526(Invalid SSL certificate) 証明書のホスト名にアクセスしたホスト名が含まれているか。期限切れや失効していないか
ブラウザーに NET::ERR_CERT_AUTHORITY_INVALID DNSレコードがプロキシ済み(オレンジ色の雲)になっているか。Cloudflareを一時停止していないか
ERR_TOO_MANY_REDIRECTS 暗号化モードがFlexibleになっていないか
Apache・Nginxが起動しない 証明書と秘密鍵の貼り付けミス(手順2のハッシュの比較)、秘密鍵のパス

エラー525の切り分けは、WordPressのHTTP 525(Cloudflare)を解決する方法で詳しく説明しています。

まとめ

  • Origin CA証明書は、Cloudflareとオリジンの間だけで使う無料の証明書で、ブラウザーは信頼しません。プロキシ済みのホスト名で使います。
  • 「SSL/TLS」→「Origin Server」→「Create Certificate」で発行し、秘密鍵はその場で保存します。
  • ApacheやNginxに証明書と秘密鍵を設定し、暗号化モードを「Full (strict)」にします。
  • 期限切れの通知は来ないので、期限は自分で管理します。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲