前書き
OCSPステープルは、訪問者のプライバシーを維持しながらSSLネゴシエーションのパフォーマンスを向上させることを目的としたTLS / SSL拡張機能です。 構成を進める前に、証明書失効の仕組みについて簡単に説明します。 この記事ではhttps://www.digitalocean.com/community/articles/how-to-set-up-apache-with-a-free-signed-ssl-certificate-on-a-vps [無料証明書]が発行しましたデモするStartSSL。
このチュートリアルでは、以下に概説するApacheおよびNginxの基本構成を使用します。
-
https://www.digitalocean.com/community/articles/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-apache-on-ubuntu-12-04 [セットアップ方法Ubuntu 12.04上のApacheを使用した1つのIP上の複数のSSL証明書]
-
https://www.digitalocean.com/community/articles/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-nginx-on-ubuntu-12-04 [セットアップ方法Ubuntu 12.04のNginxで1つのIPに複数のSSL証明書]
OCSPについて
OCSP(オンライン証明書ステータスプロトコル)は、SSL証明書が失効しているかどうかを確認するためのプロトコルです。 SSLネゴシエーション時間を短縮するために、CRLの代替として作成されました。 CRL(証明書失効リスト)を使用すると、ブラウザーは失効した証明書シリアル番号のリストをダウンロードし、現在の証明書を検証します。これにより、SSLネゴシエーション時間が長くなります。 OCSPでは、ブラウザーはOCSP URLに要求を送信し、証明書の有効性ステータスを含む応答を受信します。 次のスクリーンショットは、digitalocean.comのOCSP URIを示しています。
image:https://assets.digitalocean.com/articles/OCSP_Stapling/1.png [OCSP URI]
OCSPステープルについて
OCSPには、2つの主要な問題があります。プライバシーとCAのサーバーへの負荷です。
OCSPでは、ブラウザがCAに連絡して証明書の有効性を確認する必要があるため、プライバシーが侵害されます。 CAは、どのWebサイトがアクセスされ、誰がアクセスしたかを知っています。
HTTPS Webサイトが多くの訪問者を獲得した場合、CAのOCSPサーバーは、訪問者によって行われたすべてのOCSP要求を処理する必要があります。
OCSPステープルが実装されると、証明書所有者(読み取りWebサーバー)はOCSPサーバー自体に照会し、応答をキャッシュします。 この応答は、* Certificate Status Request *拡張応答を介してTLS / SSLハンドシェイクで「ステープル」されます。 その結果、CAのサーバーにはリクエストが負担されず、ブラウザーはユーザーの閲覧習慣を第三者に開示する必要がなくなります。
OCSPホチキスのサポートを確認する
OCSPステープルは以下でサポートされています
-
Apache HTTPサーバー(> = 2.3.3)
-
Nginx(> = 1.3.7)
続行する前に、次のコマンドでインストールのバージョンを確認してください。
アパッチ:
apache2 -v
Nginx:
nginx -v
CentOS / Fedoraユーザーは、「+ apache2 」を「 httpd +」に置き換えます。
CAバンドルを取得する
ルートCAと中間CAの証明書をPEM形式で取得し、単一のファイルに保存します。 これは、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 +」を使用できます。
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)
this記事 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;
this記事 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テスト
これをオンラインで確認するには、https://www.ssllabs.com/ssltest/index.html [このWebサイト]にアクセスして、ドメイン名を入力します。 テストが完了したら、* Protocol Details *セクションで確認してください。
image:https://assets.digitalocean.com/articles/OCSP_Stapling/2.png [Qualys SSLレポート]
追加の読書
-
OCSPステープルに関するMozillaの記事-http://en.wikipedia.org/wiki/OCSP_stapling
-
OCSPステープルに関するウィキペディアの記事-http://en.wikipedia.org/wiki/OCSP_stapling