2026年8月22日

2026年8月22日

OCSP Staplingの設定方法(Apache・Nginx)|WordPressサイトで要るかの確認から

OCSP Stapling(OCSPステープリング)は、証明書が失効していないことを示す応答を、Webサーバーが認証局(CA)から取ってきてTLSの接続時に添えて渡す仕組みです。WordPress本体やプラグインには、この設定はありません。Webサーバー(ApacheやNginx)の設定で有効にします。

そのため、設定できるのはVPSや専用サーバーなど、Webサーバーの設定ファイルを自分で編集できる環境です。共用のレンタルサーバーでは、TLSの設定はサーバー会社が管理しており、利用者は変更できません。

また、2026年10月時点では、Let's Encryptの証明書ではOCSP Staplingは働きません。設定の前に、自分の証明書が対象になるかを確かめてください。

OCSP Staplingの仕組み

証明書は、有効期限の前でも秘密鍵の漏えいなどで失効することがあります。ブラウザーが失効を確かめる方法の一つがOCSP(Online Certificate Status Protocol)で、証明書に書かれたOCSPレスポンダーのURLへ問い合わせます。

ブラウザーが自分で問い合わせると、表示が遅くなるうえ、CAに「誰がどのサイトを見たか」が伝わります。OCSP Staplingでは、Webサーバーが定期的にCAからOCSP応答を取得してキャッシュし、TLSのハンドシェイクの中でブラウザーに渡します。応答にはCAの署名があるため、サーバーが内容を書き換えることはできません。

Let’s Encryptの証明書では働かない

Let's Encryptは2025年にOCSPの提供を終えました。2025年5月から発行する証明書にOCSPのURLを入れなくなり、2025年8月にOCSPレスポンダーを停止しています。証明書の有効期間は90日なので、いま使われている同社の証明書には、どれもOCSPのURLがありません。

業界全体でも、失効の確認はOCSPからCRL(証明書失効リスト)へ移っています。CA/ブラウザフォーラムの基準でOCSPの提供はCAの任意になりました。

Let's Encryptの証明書を使っている場合、OCSP Staplingの設定は要りません。設定が残っていても、Webサーバーはステープリングを行わず、ログに警告を出すだけです。商用CAの証明書(OV・EV証明書など)でOCSPのURLがあるものは、設定する意味があります。

詳しい経緯とNginxの設定は、OCSPステープリングの設定と確認方法(Nginx)でも説明しています。

手順1: 証明書にOCSPのURLがあるか確かめる

サーバー上の証明書ファイルを調べる場合と、公開中のサイトから証明書を取ってきて調べる場合の2通りがあります。パスとドメインは自分のものに置き換えてください。

# サーバー上の証明書ファイルを調べる
openssl x509 -in /etc/ssl/example.com/cert.pem -noout -ocsp_uri

# 公開中のサイトの証明書を調べる
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
  | openssl x509 -noout -ocsp_uri

http://ocsp. で始まるようなURLが表示されれば、その証明書はOCSPに対応しています。何も表示されなければOCSPのURLはなく、ステープリングは働きません。この場合は以降の手順は不要です。

手順2: Apacheで設定する(Ubuntu・Debian)

Ubuntu・Debianのパッケージ版Apache 2.4を例にします。mod_ssl が有効で、HTTPSのサイトがすでに動いていることが前提です。

キャッシュの場所を決める

OCSP Staplingには、OCSP応答を置くキャッシュ(SSLStaplingCache)が必須です。このディレクティブは <VirtualHost> の中には書けないので、サーバー全体の設定として別ファイルに書きます。

/etc/apache2/conf-available/ocsp-stapling.conf を作り、次の1行を書きます。

SSLStaplingCache "shmcb:${APACHE_RUN_DIR}/ssl_stapling(32768)"

shmcb は共有メモリーを使うキャッシュで、socache_shmcb モジュールが必要です。Ubuntu・Debianでは a2enmod ssl を実行したときに一緒に有効になります。${APACHE_RUN_DIR} は /etc/apache2/envvars で定義されている実行時ディレクトリー(通常は /var/run/apache2)です。

sudo a2enmod ssl
sudo a2enconf ocsp-stapling

サイトの設定でステープリングを有効にする

HTTPSのサイトの設定ファイル(例: /etc/apache2/sites-available/example.com-ssl.conf)の <VirtualHost *:443> の中に追加します。

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

    SSLEngine on
    # サーバー証明書の後ろに中間証明書を続けたファイル
    SSLCertificateFile    /etc/ssl/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/ssl/example.com/privkey.pem

    # OCSP Stapling
    SSLUseStapling on
    SSLStaplingResponderTimeout 5
    SSLStaplingReturnResponderErrors off
</VirtualHost>
ディレクティブ 意味
SSLUseStapling on OCSP Staplingを有効にする(既定は off)
SSLStaplingResponderTimeout 5 OCSPレスポンダーへの問い合わせを待つ秒数(既定は10秒)
SSLStaplingReturnResponderErrors off 「good」か「revoked」の応答だけをブラウザーに渡し、取得に失敗した応答などは渡さない(既定は on)

キャッシュの有効期間は、正常な応答が SSLStaplingStandardCacheTimeout(既定3600秒)、取得に失敗した応答が SSLStaplingErrorCacheTimeout(既定600秒)です。通常は既定のままで構いません。

Apacheは、OCSPの問い合わせに証明書の発行元(中間証明書)を使います。SSLCertificateFile に中間証明書を含めていないと、ステープリングに失敗します。サーバー証明書、中間証明書の順につなげたファイル(fullchain.pem など)を指定してください。

構文を確かめて読み込み直す

sudo apachectl configtest
sudo systemctl reload apache2

Syntax OK と表示されてから読み込み直します。証明書にOCSPのURLがない場合は、エラーログ(/var/log/apache2/error.log)に、証明書にOCSPのURIがないという趣旨のメッセージが出て、ステープリングは行われません。

手順3: Nginxで設定する

Nginxでは、HTTPSの server ブロックに次の設定を加えます。

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /etc/ssl/example.com/fullchain.pem;  # サーバー証明書+中間証明書
    ssl_certificate_key /etc/ssl/example.com/privkey.pem;

    # OCSP Stapling
    ssl_stapling        on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/ssl/example.com/chain.pem;  # 中間証明書(+ルート証明書)

    # OCSPレスポンダーのホスト名を引くためのDNS
    resolver 1.1.1.1 8.8.8.8 valid=300s;
    resolver_timeout 5s;

    root /var/www/wordpress;
    # ...(以下、既存の設定)
}
  • ssl_stapling_verify on は、CAから受け取ったOCSP応答の署名をNginxが検証する設定です。検証には ssl_trusted_certificate の証明書を使います。
  • NginxはOCSPレスポンダーのホスト名を実行時に名前解決するので、resolver の指定が要ります。指定が無いと、エラーログに「no resolver defined to resolve」と出てステープリングに失敗します。
sudo nginx -t
sudo systemctl reload nginx

nginx -t で「"ssl_stapling" ignored, no OCSP responder URL in the certificate」と出た場合は、証明書にOCSPのURLがありません。手順1の結果を見直してください。

手順4: 効いているか確かめる

openssl s_client に -status を付けて接続すると、サーバーがOCSP応答を添えているかが分かります。

openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>/dev/null \
  | sed -n '/OCSP response:/,/^---/p'

効いている場合は、次のように表示されます。

OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    ...
    Cert Status: good

OCSP Response Status: successful と Cert Status: good があれば正常です。OCSP response: no response sent と出た場合は、応答が添えられていません。

再起動や読み込み直しの直後は、サーバーがまだOCSP応答を取得していないため、最初の数回は no response sent になることがあります(特にNginxは、最初の接続をきっかけに取得します)。数秒おいて2〜3回試してから判断してください。

curl -I ではOCSP応答の有無は分かりません。確認には openssl s_client -status を使います。

うまくいかないとき

症状 確かめること
no response sent が続く 手順1で証明書にOCSPのURLがあるか。Let's Encryptの証明書ではないか
Apacheが起動しない、configtest でエラー SSLStaplingCache を <VirtualHost> の中に書いていないか。socache_shmcb が有効か(apachectl -M で確認)
Nginxのログに「no resolver defined」 resolver を書いたか
Apacheのログに「ssl_stapling_init_cert: can't retrieve issuer certificate!」 SSLCertificateFile に中間証明書が含まれていない。fullchain.pem を指定する
ログに検証の失敗が出る 中間証明書が正しいか。証明書を更新して発行元が変わったのに、fullchain.pem や ssl_trusted_certificate を更新していないことが多い
応答の取得がタイムアウトする サーバーから外向きのHTTP(80番)通信を止めていないか。OCSPは通常HTTPで問い合わせる

OCSPレスポンダーが応答しているかは、サーバーから直接問い合わせて確かめられます。

openssl ocsp -issuer /etc/ssl/example.com/chain.pem \
  -cert /etc/ssl/example.com/cert.pem \
  -url "$(openssl x509 -in /etc/ssl/example.com/cert.pem -noout -ocsp_uri)" \
  -resp_text -noverify | grep -E "Response Status|Cert Status"

ここで Cert Status: good が返るのにステープリングされない場合は、Webサーバー側の設定に原因があります。

WordPress側で必要なこと

OCSP StaplingはTLSの接続の段階で働くため、WordPressの設定やプラグインを変える必要はありません。サイトをHTTPSで表示する設定(「設定」→「一般」のURL、HTTPからHTTPSへのリダイレクト、混在コンテンツの解消)がまだであれば、WordPressをSSL(HTTPS)化する方法を先に済ませてください。

証明書の取得やApacheのHTTPS設定そのものは、ApacheでSSL/TLS(HTTPS)を有効にする手順で説明しています。

まとめ

  • OCSP StaplingはWebサーバーの設定で、WordPressの設定ではありません。共用レンタルサーバーでは利用者が変更できません。
  • Let's Encryptの証明書にはOCSPのURLがなく、ステープリングは働きません(2026年10月時点)。まず openssl x509 -noout -ocsp_uri で確かめます。
  • Apacheでは SSLStaplingCache をサーバー全体の設定に、SSLUseStapling on を <VirtualHost> に書き、SSLCertificateFile に中間証明書を含めます。
  • Nginxでは ssl_stapling・ssl_stapling_verify・ssl_trusted_certificate・resolver をそろえます。
  • 確認は openssl s_client -status で行い、読み込み直しの直後は数回試します。

お気軽にご相談ください

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