web-dev-qa-db-ja.com

SSL証明書失効チェック

SSLプロトコルでは、証明書の失効ステータスをチェックする場所がわかりません。

https://developer.mozilla.org/en/Introduction_to_SSL

証明書の取り消しとステータスチェックはSSLプロトコルに実装されていませんか?

12
user1157

SSLプロトコルは、サーバーが証明書をクライアントに送信する方法を指定します。次に、クライアントは証明書を検証してサーバーの公開鍵を「取得」する必要があります。 SSL仕様 は証明書の検証を記述していません。そのためには、 X.509 を参照する必要があります。この場合、リンク先のドキュメントで説明されているプロセスよりもはるかに複雑なプロセスであることがわかります。

失効ステータスの確認は、証明書の検証の一部です。クライアントは実際には、適切と思われる方法でそれを自由に実行できます。多くのWebブラウザーは、「mmhh ...おそらく取り消されないので、何も確認する必要がない」というプロセスによって、失効ステータスを「確認」します。 X.509の世界では、失効ステータスは、CRL(証明書失効リスト)をダウンロードして検証するか、OCSPレスポンダからOCSP応答を取得することで確認できます(OCSP応答は、単一のターゲット証明書に縮小されたCRLの一種です)。理論的には、すべての証明書、つまりサーバー証明書だけでなく、サーバー証明書の検証に使用される中間CA証明書、およびCRLおよびOCSP応答の検証に使用される他のすべての証明書の失効ステータスを取得する必要があります(これは非常に再帰的になる可能性があります)。総コスト(特にダウンロード時間)が非常に高くなる可能性があるため、多くのクライアントはより弱いがより速いモデルに依存しています(たとえば、中間CAではなくサーバー証明書自体のステータスのみをチェックする、またはステータスをまったくチェックしない)。

とにかく、検証はサーバーの公開鍵を取得する方法であるため、SSLハンドシェイク中に、ClientKeyExchangeメッセージがクライアントによって送信される直前に行われます。

15
Thomas Pornin

証明書のステータスを確認する方法は2つあります。

これらはどちらもSSL固有ではなく、証明書のステータスを確認するだけです。したがって、どちらも証明書を使用するものすべてに適用されます。