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で証明書を発行する
- Cloudflareのダッシュボードで対象のドメイン(ゾーン)を開き、「SSL/TLS」→「Origin Server」を開きます。
- 「Origin Certificates」の「Create Certificate」を選びます。
- 「Generate private key and CSR with Cloudflare」を選び、鍵の種類(RSAかECC)を選びます。古いソフトウェアとの互換性を気にするならRSAを選びます。
- ホスト名の欄には、既定でドメイン本体(
example.com)と1階層のワイルドカード(*.example.com)が入っています。ワイルドカードがカバーするのは1階層だけで、a.b.example.comのような2階層のホスト名には別に指定が要ります。 - 有効期間(既定は15年)を選び、作成します。
- 「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)」にします。
- 期限切れの通知は来ないので、期限は自分で管理します。