web-dev-qa-db-ja.com

証明書チェーン

コンピューターが特定の証明書のIDを確認するには、ルート証明書までのすべての証明書が必要ですか?

6
user1157

証明書の検証では、トラストアンカー(「ルート証明書」)から検証される証明書までのチェーン全体を処理する必要があります。そのため、コンピュータには中間CA証明書が必要です。

これは、コンピュータがそれらのCA証明書を保存する必要があることを意味しません。通常、証明書を処理するプロトコルには、中間CA証明書を含む一連の「ヘルパーオブジェクト」を伝達するためのいくつかの規定が含まれています。たとえば、 SSL/TLS の場合、サーバーは証明書を、クライアントがサーバー証明書の検証に使用できる中間CA証明書であると想定される他の証明書の束とともに送信します。したがって、クライアントは必要なときに必要なCA証明書にアクセスできます。

中間CA証明書のローカルキャッシュを保持することは、特にストレージがネットワーク帯域幅よりも安価である最近のコンピューターでは保持することをお勧めします。

6
Thomas Pornin

RFC 2549 セクション3.2によると、X.509の下では、サーバー証明書に署名した認証局(CA)がすでにクライアントコンピューターに格納されている可能性があります。そうでない場合、CAの証明書が必要になります。チェーンがクライアントコンピュータに保存されている公開鍵を持つCAに到達するまで、別のCAなどによって署名されます。これは通常、ルート証明書です。

ただし、ほとんどのX.509実装では、自己署名証明書、またはVerisignのような「ルートCA」に接続されていない証明書を保存し、それを使用してサーバーの信頼性を検証する方法はありません。

4
user502

OK、長い答えがあります:

  • 簡単な方法-証明書が信頼できる発行者からのものであることを確認するだけの場合は、証明書を発行している可能性のあるCAのコレクションのみが必要です。このアプローチは迅速かつ簡単ですが、証明書のステータスチェックなどの一般的なベストプラクティスを排除します。
  • 正しい方法-サイトをより適切にチェックするためのリスクまたは要件が高い場合(最低限)-証明書パスを再構築し、証明書ステータスメカニズム(CRLまたはOCSP)に対してルート以外のすべての証明書をチェックし、有効期限を確認しますすべての証明書。

正しい方法で実行する場合は、認証に使用される証明書の発行に使用できる証明書の作成に関与するすべてのCAが必要です。 「証明書パスを再構築する」と言うときは、証明書の署名が発行者の公開鍵と一致し、発行者の署名が発行者の公開鍵と一致することを確認します。署名が自身の公開鍵と一致するルート証明書。

エンドエンティティ証明書を保存する必要はありません。

2
bethlakshmi