序章

OCSPステープリングはTLS/SSL拡張機能であり、訪問者のプライバシーを維持しながらSSLネゴシエーションのパフォーマンスを向上させることを目的としています。 構成を進める前に、証明書失効がどのように機能するかについて簡単に説明します。 この記事では、StartSSLによって発行された無料の証明書を使用して説明します。

このチュートリアルでは、以下に概説するApacheとNginxの基本構成を使用します。

OCSPについて

OCSP(Online Certificate Status Protocol)は、SSL証明書が取り消されているかどうかを確認するためのプロトコルです。 これは、SSLネゴシエーション時間を短縮するためのCRLの代替として作成されました。 CRL(Certificate Revocation List)を使用すると、ブラウザは失効した証明書のシリアル番号のリストをダウンロードし、現在の証明書を確認します。これにより、SSLネゴシエーション時間が長くなります。 OCSPでは、ブラウザはOCSP URLに要求を送信し、証明書の有効性ステータスを含む応答を受信します。 次のスクリーンショットは、digitalocean.comのOCSPURIを示しています。

OCSPステープリングについて

OCSPには、プライバシーとCAのサーバーへの大きな負荷という2つの大きな問題があります。

OCSPでは、ブラウザがCAに接続して証明書の有効性を確認する必要があるため、プライバシーが侵害されます。 CAは、どのWebサイトにアクセスしているか、誰がアクセスしたかを認識しています。

HTTPS Webサイトに多数の訪問者がいる場合、CAのOCSPサーバーは、訪問者によって行われたすべてのOCSP要求を処理する必要があります。

OCSPステープリングが実装されている場合、証明書所有者(読み取りWebサーバー)はOCSPサーバー自体にクエリを実行し、応答をキャッシュします。 この応答は、 Certificate StatusRequest拡張応答を介してTLS/SSLハンドシェイクで「ステープル」されます。 その結果、CAのサーバーは要求に負担をかけられず、ブラウザーはユーザーの閲覧習慣を第三者に開示する必要がなくなります。

OCSPステープリングのサポートを確認してください

OCSPステープリングはでサポートされています

  • Apache HTTPサーバー(> = 2.3.3)
  • Nginx(> = 1.3.7)

続行する前に、次のコマンドを使用してインストールのバージョンを確認してください。

Apache:

apache2 -v

Nginx:

nginx -v

CentOS/Fedoraユーザーが置き換えます apache2httpd.

CAバンドルを取得する

ルートCAと中間CAの証明書をPEM形式で取得し、それらを1つのファイルに保存します。 これは、StartSSLのルートおよび中間CA証明書用です。

cd /etc/ssl
wget -O - https://www.startssl.com/certs/ca.pem https://www.startssl.com/certs/sub.class1.server.ca.pem | tee -a ca-certs.pem> /dev/null

CAがDER形式の証明書を提供している場合は、それらをPEMに変換します。 たとえば、DigiCertはDER形式の証明書を提供します。 それらをダウンロードしてPEMに変換するには、次のコマンドを使用します。

cd /etc/ssl
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVCA-1.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null

両方のコマンドセットは tee ファイルに書き込むために、 sudo tee root以外のユーザーとしてログインした場合。

ApacheでのOCSPステープリングの構成

SSL仮想ホストファイルを編集し、これらの行を内部に配置します。 <VirtualHost></VirtualHost> 指令。

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on

キャッシュの場所は外部で指定する必要があります <VirtualHost></VirtualHost>.

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

この記事に従ってApacheでSSLサイトをセットアップした場合、仮想ホストファイルは次のようになります。

/etc/apache2/sites-enabled/example.com-ssl.conf

<IfModule mod_ssl.c>
    SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
    <VirtualHost *:443>

            ServerAdmin webmaster@localhost
            ServerName example.com
            DocumentRoot /var/www

            SSLEngine on

            SSLCertificateFile /etc/apache2/ssl/example.com/apache.crt
            SSLCertificateKeyFile /etc/apache2/ssl/example.com/apache.key

            SSLCACertificateFile /etc/ssl/ca-certs.pem
            SSLUseStapling on
    </VirtualHost>
</IfModule>

行う configtest エラーをチェックします。

apachectl -t

次の場合にリロード Syntax OK 表示されています。

service apache2 reload

IE(Vista以降)またはFirefox 26以降でWebサイトにアクセスし、エラーログを確認します。

tail /var/log/apache2/error.log

で定義されたファイルの場合 SSLCACertificateFile ディレクティブがない場合、次のようなエラーの証明書が表示されます。

[Fri May 09 23:36:44.055900 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02217: ssl_stapling_init_cert: Can't retrieve issuer certificate!
[Fri May 09 23:36:44.056018 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02235: Unable to configure server certificate for stapling

そのようなエラーが表示されない場合は、最後のステップに進みます。

NginxでのOCSPステープリングの構成

SSL仮想ホストファイルを編集し、次のディレクティブを内部に配置します server {} セクション。

sudo nano /etc/nginx/sites-enabled/example.com.ssl
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

この記事に従ってNginxでSSLホストをセットアップした場合、完全な仮想ホストファイルは次のようになります。

/etc/nginx/sites-enabled/example.com.ssl

server {

        listen   443;
        server_name example.org;

        root /usr/share/nginx/www;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/example.org/server.crt;
        ssl_certificate_key /etc/nginx/ssl/example.org/server.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;
}

行う configtest すべてが正しいかどうかを確認します。

service nginx configtest

次に、リロードします nginx サービス。

service nginx reload

IE(Vista以降)またはFirefox 26以降でWebサイトにアクセスし、エラーログを確認します。

tail /var/log/nginx/error.log

ファイルがで定義されている場合 ssl_trusted_certificate 証明書が欠落している場合、次のようなエラーが表示されます。

2014/05/09 17:38:16 [error] 1580#0: OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: ocsp.startssl.com

そのようなエラーが表示されない場合は、次の手順に進みます。

OCSPステープリングのテスト

OCSPステープリングが機能しているかどうかをテストするための2つの方法について説明します。 openssl QualysでのコマンドラインツールとSSLテスト。

OpenSSLコマンド

このコマンドの出力には、WebサーバーがOCSPデータで応答したかどうかを示すセクションが表示されます。 私達 grep この特定のセクションを表示します。

echo QUIT | openssl s_client -connect www.digitalocean.com:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

交換 www.digitalocean.com あなたのドメイン名で。 OCSPステープリングが正常に機能している場合は、次の出力が表示されます。

OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
    Produced At: May  9 08:45:00 2014 GMT
    Responses:
    Certificate ID:
      Hash Algorithm: sha1
      Issuer Name Hash: B8A299F09D061DD5C1588F76CC89FF57092B94DD
      Issuer Key Hash: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
      Serial Number: 0161FF00CCBFF6C07D2D3BB4D8340A23
    Cert Status: good
    This Update: May  9 08:45:00 2014 GMT
    Next Update: May 16 09:00:00 2014 GMT

OCSPステープリングが機能していない場合、出力は表示されません。

QualysオンラインSSLテスト

これをオンラインで確認するには、このWebサイトにアクセスして、ドメイン名を入力してください。 テストが完了したら、プロトコルの詳細セクションで確認します。

追加の読み物