web-dev-qa-db-ja.com

X.509証明書ポリシーの質問

証明書ポリシーのマッピングについて別の質問をしました。これは別の問題です。これは 証明書ポリシー についてです。

X.509 RFCから引用するには:

   In an end entity certificate, these policy information terms indicate
   the policy under which the certificate has been issued and the
   purposes for which the certificate may be used.  In a CA certificate,
   these policy information terms limit the set of policies for
   certification paths that include this certificate.  When a CA does
   not wish to limit the set of policies for certification paths that
   include this certificate, it MAY assert the special policy anyPolicy,
   with a value of { 2 5 29 32 0 }.

したがって、次のX.509証明書チェーンがあるとします。

root CA ---> intermediary CA ---> client cert

チェーン内の各子が所有する一連のポリシーは、常に親ポリシーのサブセットになるように聞こえますか?あれは正しいですか?

9
compcert

基本的な考え方は、ポリシーは、特定のCAのレベルだけでなく、パス全体にわたる認証プロセスを記述することです。特定の証明書[〜#〜] c [〜#〜]内で、Certificate Policies拡張は、プロセスが適用される一連のポリシーを提供しますその結果、[〜#〜] c [〜#〜]が作成されました。

検証中( RFC 528 のセクション6.1を参照)、検証者は「ポリシーツリー」を計算します。単純なケース(考えられる複雑さについては以下を参照)では、処理の最後のvalid_policy_treeの葉は、パス内のすべての証明書内のポリシーのセットの共通部分になります(手順「ポリシーツリーの削除」は実際に交差を計算するもの)。簡単に言うと、最後に取得するポリシーのセットは、パス内のすべての証明書に現れるポリシーのセットになります。非常に論理的です。パス内のすべての証明書がポリシー1.2.3.4.5と互換性のある方法で発行された場合にのみ、特定のパスがポリシー1.2.3.4.5に準拠していると言えます。 1.2.3.4.5のCertificate Policies拡張。

各証明書が上位CAからの証明書のサブセットのみを使用することは必須ではありません。パスがマージされる可能性があるため、これは不適切に定義されます(特定のCAが複数のuber-CAから複数の証明書を取得し、それらに個別のポリシーが含まれる可能性があります)。交差点の作業は、単一のパスが考慮される検証時に行われます。概念的には、検証までの道はありません。

考えられる合併症:

  • Certificate Policies拡張子のない証明書が存在する場合があります。
  • パスに沿って一部のポリシーを別のポリシーに置き換えることができるポリシーマッピングが存在する場合があります。
  • 処理を変更するanyPolicyという特別なポリシーがあります。
  • 特定のパスの深さから始めて、anyPolicyを禁止したり、明示的なポリシーを要求したりできる拡張機能があります。

私はポリシーに関してそれを誤解する非常に多くのCAに遭遇しました。つまり、各証明書に(重要ではない)Certificate Policies拡張が含まれ、そのCAに固有の一意のポリシーが配置されます。最終結果は、検証時にvalid_policy_treeが空になることです(これらの証明書には明示的なポリシーを必要とする拡張が含まれていないため、これは致命的ではありません)。これは、拡張機能を一種の美化されたコメントとして使用しています。

5
Thomas Pornin

あなたが引用しているテキストよりもはるかに詳細な例をここに見つけました:

http://tools.ietf.org/html/rfc2527

セクション3.2および3.3。これは特にセクション3.3.1から関連があるように見えました-

証明書パスを処理するとき、証明書を使用するアプリケーションに受け入れられる証明書ポリシーは、パス内のすべての証明書、つまりCA証明書とエンドエンティティ証明書に存在する必要があります。

それを読むと、それらは数学的に完全なサブセットではないようです(私が見たものはとにかく通常英語で書かれています)が、アプリケーションが特定のエンドエンティティを信頼することを選択した場合、パス全体のポリシーは関連します。

実際には、一般的な例は、メインCAチェーンがかなり一般的な特定のポリシーを参照することですが、特殊なCAとその問題の証明書は、特殊化された使用法について、一般化されたポリシーに適合するより制限的なポリシーを参照する場合があります。

4
bethlakshmi