OCSPとは
OCSP(Online Certificate Status Protocol)とは、公開鍵の証明書の失効状態を取得する通信プロトコルのことである。暗号化やデジタル署名に証明書を用いる際、OCSPを使うことで、有効期限より前に失効している証明書を速やかに確認することができる。OCSPは、CRL(Certificate Revocation List)を利用した失効確認の課題を解決するために考案された。
CRLとは
CRL(Certificate Revocation List)とは、有効期限よりも前に失効させたデジタル証明書のリストのことである。
基本的に証明書には有効期限が設定されている。しかし、期限内であっても証明書を無効にすることができる。例えば、誤って証明書が発行された場合や、証明書の秘密鍵を紛失してしまったケースがこれに該当する。このように有効期限より前に失効している証明書を一覧にしたものを、CRLという。日本語では、証明書失効リストと呼ばれている。
CRLの管理は、認証局(CA)が行っている。公開鍵暗号基盤(PKI)において、認証局が発行した証明書を失効させる際、認証局はCRLを作成する。そして、CRLにその証明書のシリアル番号を掲載する。ユーザが証明書の正当性を確認するときは、認証局からCRLを入手して、証明書が有効かどうかを確認する。
このとき、証明書の有効性のチェックは以下の2つの方法に対応している。
①CRLをローカルにダウンロードする方法
1つ目は、ユーザがCRLファイルをダウンロードし、証明書が有効であるかどうかを確認する方法である。
CRLを使用してWebサーバのサーバ証明書の失効確認を行う場合、以下のような流れになる。
- ブラウザはSSL証明書に記載されているCRLへアクセスし、リストをダウンロード
- リストの中に、アクセスしようとしたWebサーバのSSL証明書のシリアル番号があるかどうかを確認
- リストの中のシリアル番号を参照して、証明書が失効しているかどうかを判別
しかしこの方法では、1つの証明書が有効か否かを確認するのにCRL全体を入手する必要がある。また、最新のCRLを定期的にダウンロードしなければならない。そのため、CRLのデータ容量は大きくなる一方で、失効確認の処理が重くなるため時間がかかってしまう。
②OCSPを利用した方法
この問題を改善するために考案されたのが、OCSP (Online Certificate Status Protocol) を使った方法である。OCSPでは、「OCSPレスポンダ」と呼ばれるサーバを稼働させ、そこでCRLを保持している。ユーザは、OCSPレスポンダに証明書のシリアル番号を問い合わせ、有効であるか否かの回答を得る。以下では、OCSPの利用例として、「サーバ証明書」の失効確認と「クライアント証明書」の失効確認の流れを紹介する。
OCSPを利用した「サーバ証明書」の失効確認
OCSPを使用してWebサーバのサーバ証明書の失効確認を行う場合、以下のような流れになる。
- OCSPレスポンダは認証局のCRLを取り込み、サーバ証明書の失効情報を保管
- ブラウザがWebサーバにアクセスすると、Webサーバはサーバ証明書をブラウザに送付
- ブラウザはOCSPレスポンダに証明書の失効情報を問い合わせる
- OCSPレスポンダはブラウザへ失効情報を返し、証明書が失効しているかどうかを判別
この方法では、CRLを利用した証明書の失効確認に比べて、証明書の有効性をリアルタイムで確認することができる上、処理も軽くなる。
ただし、上記の場合、ユーザがWebサイトにアクセスする度にブラウザがOCSPレスポンダに問い合わせを行うこととなる。そのため、HTTPS通信の確立までに余計に時間がかかってしまう。また、ユーザが、いつ、どのサイトにアクセスしたのかという情報が、OCSPレスポンダに伝わってしまうという問題もある。これを解決するために、WebサーバにてOCSP Staplingという方法が使用される。
OCSP Stapling
OCSP Staplingとは、Webサーバが、サーバ証明書とともにOCSPレスポンダから取得した情報も併せて、ブラウザへ送付する方法である。
例えば、OCSP StaplingでWebサーバのサーバ証明書の失効確認を行う場合、以下のような流れになる。
- OCSPレスポンダは認証局のCRLを取り込み、サーバ証明書の失効情報を保管
- (ブラウザがWebサーバにアクセスすると、)WebサーバはOCSPレスポンダに証明書の失効情報を問い合わせる
- OCSPレスポンダはWebサーバへ失効情報を返し、Webサーバはその応答をキャッシュする
- (ブラウザがWebサーバにアクセスすると、)Webサーバは自身のサーバ証明書と失効情報をブラウザに送付
この方法により、ブラウザが張るコネクションは1つで済む。そのため、HTTPS通信の開始時間を短縮することができる。また、ブラウザはWebサーバとのみ通信を行うため、OCSPレスポンダにユーザのアクセス情報は伝わらない。
OCSPを利用した「クライアント証明書」の失効確認
OCSPは、クライアント証明書の失効確認にも利用することができる。OCSPを利用して、クライアント証明書を使ったVPNコネクションの認証を行う場合、以下のような流れになる。
- OCSPレスポンダは認証局のCRLを取り込み、クライアント証明書の失効情報を保管
- VPNクライアントがVPNサーバにコネクション要求をする際、VPNクライアントはクライアント証明書をVPNサーバに送付
- VPNサーバはOCSPレスポンダに証明書の失効情報を問い合わせる
- OCSPレスポンダはVPNサーバへ失効情報を返し、証明書が失効しているかどうかを判別
なお、OCSPによる失効確認を行う場合、失効確認を行う側はOCSPレスポンダへアクセスするための情報が必要である。認証局が失効確認を行う対象となる証明書を発行する際、証明書の拡張領域である「認証機関アクセス情報(Authority Information Access, AIA) 」に、OCSPレスポンダのURLを記載することができる。証明書を受け取った側は、この情報を参照してOCSPレスポンダへアクセスすることが可能である。
また、OCSPレスポンダは、OCSP応答が正当なものであることを示すため、証明書を使用してOCSP応答に署名を行う必要がある。
デージーネットの取り組み
デージーネットでは、OCSPレスポンダの機能を提供するOSSのOpenCA OCSPDについて調査・検証し、「OpenCA OCSPD調査報告書」として公開している。OpenCA OCSPDは、プライベート認証局のOpenXPKIと組み合わせて使用することができる。また、複数の認証局の失効情報を取り扱ったり、失効情報の更新を自動化したりすることも可能である。調査報告書は無料でダウンロードすることができる。
また、デージーネットでは、OpenXPKIを活用してプライベート証明書を発行する認証局の構築サービスを行っている。プライベート認証局を構築すると、通常のパスワードを使った認証よりも解析されにくく、システムの信頼を向上することができる。OSSを組み合わせて認証局を構築するサービスのため、ユーザライセンス料をかけず、設計・構築・保守に十分な費用をかけることが可能である。
認証局の構築後はOpen Smart Assistanceにより認証局管理のサポートが受けられる。Open Smart Assistanceは継続してシステム管理者の運用をサポートするサービスで、以下のようなサポートが受けられる。
- Q&A
- セキュリティ情報提供
- 障害調査、障害回避
- 障害時オンサイト対応
- 障害時システム再構築
【カテゴリ】:プロトコル  認証  
【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー
日程: | 11月22日(金)Webセミナー「BigBlueButton」を使用します。 |
内容: | OSSを導入したいけど、どこから手をつければいいかわからない方必見! |
ご興味のあるかたはぜひご参加ください。 |