ApacheでOCSP Staplingを有効にしてみた


Apacheでは設定を二行加えるだけでOCSP Staplingを有効にできた。

HTTPSによるアクセスでは、通信を暗号化するためにサイトの証明書が必要です。

この証明書には有効期間が有りますが、有効期間内であっても証明書が失効している可能性が有ります。そのため証明書が失効していないか確認する必要が有ります。

証明書が有効か確認するには、CRLとOCSPという二種類が有ります1。この二種類の方法の内、現在はレスポンスのが速いという利点2から主にOCSPが使用されています。

ただしOCSPにも次のような問題点が有ります3

  • OCSP応答が得られない場合にサーバ証明書の失効検証を正しく行わないままSSL通信を許可してしまう可能性がある。
  • OCSPを使った場合には、あるサイトにアクセスがあったことをOCSPレスポンダも知り得てしまう。

そこでこの問題を回避するために、RFC6066ではコンテンツを配信するサーバがOCSPレスポンダを兼ねる(キャッシュする)ことができる方法が提案されています4。これによりOCSPレスポンダに関するどちらの問題点も解消できます。

なおこのRFC6066の証明書状態リクエスト(TLS Certificate Status Request)は、OCSP staplingと一般に呼ばれています5

OCSP staplingを有効にするApacheの設定

OCSP staplingの説明が長くなりましたが、ApacheでOCSP staplingを有効にする設定はいたって簡単です6

UbuntuのapacheパッケージでApacheをインストールしたならば、SSLのグローバル設定である/etc/apache2/mods-enabled/ssl.confに次の二行を追加します。

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

設定はこれだけです。

設定を変更したらapacheを再起動します。

$ sudo apachectl configtest
Syntax OK

$ sudo service apache2 restart

OCSP staplingが有効か確認

OCSP staplingが有効になっているかは、opensslコマンドを使用して確認します。

OCSP staplingが有効になっている場合は、次のようにOCSP Response Dataを含む結果が得られます。

$ openssl s_client -connect www.example.jp:443 -status -servername www.example.jp < /dev/null | head
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
verify error:num=20:unable to get local issuer certificate
verify return:0
CONNECTED(00000003)
OCSP response: 
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
    Produced At: Dec 23 14:51:00 2015 GMT
    Responses:
DONE

もし次のようにOCSP response: no response sentとなった場合は、OCSP staplingが有効になっていません。

$ openssl s_client -connect www.example.jp:443 -status -servername www.example.jp < /dev/null | head
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
verify error:num=20:unable to get local issuer certificate
verify return:0
DONE
CONNECTED(00000003)
OCSP response: no response sent
---
Certificate chain
 0 s:/CN=www.nosuz.jp
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate

参照と脚注


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください