web-dev-qa-db-ja.com

認証局の証明書を取り消すと、発行した証明書もすべて無効になりますか?

認証局の証明書を取り消すと、発行した証明書もすべて無効になりますか?その下の機関によって発行された証明書についてはどうですか?

たとえば、ルートCA Aが証明書Cを発行する中間CA Bを発行し、次の場合:

  • CA AはCA Bを取り消しますが、証明書Cは無効になりますか?
  • CA Aは(どういうわけか)取り消されますが、証明書Cも無効になるように、その取り消しがチェーン全体にカスケードされますか?
26
Jonathan Wilbur

CA AはCA Bを取り消しますが、証明書Cは無効になりますか?

はい、失効はツリーまでカスケードします。 CA証明書が取り消された場合、(CAの下にあるレベルの数に関係なく)すべての証明書は暗黙的に信頼されていないと見なされます。それらが* untrusted *、になることを忘れないでください。

CA Aは(なんらかの理由で)取り消されますが、証明書のCも無効になるように、その取り消しがチェーン全体でカスケードされますか?

ルートCAの失効は、RFC5280内の未定義の操作です。この場合、CAは自身の証明書(シリアル番号)を独自のCRLに入れ、独自の鍵で署名します。そして今、鶏卵の問題があります:

CA証明書は取り消されました(CRLにリストされています)が、CRLは取り消された鍵で署名されているため、このCRLを信頼して取得できませんルート証明書が取り消されたかどうかについての明確な回答。この問題は、多くの場合、RFC5280技術を使用してルートCAの失効をチェックしないことで解決されます。たとえば、Microsoftの証明書チェーンエンジンのデフォルト設定では、ルートCA証明書の失効はまったくチェックされません。

このような場合(ルートCAの失効)は、OOBプロセスを使用して、明示的に信頼されたアンカー(ルート証明書)のリストを維持し、リストから不正なCA証明書を削除することにより、異なる方法で処理されます。

34
Crypt32

"場合によります"。

最も安全な答えは「はい、サブツリーを取り消す」です。「B」証明書が取り消されると、発行したと主張する証明書(または署名されたCRLなど)を信頼する理由がなくなるためです。

しかし、それは実際にはチェーンビルダーに与えられる入力に依存します(つまり、アプリケーション間で一貫性がなくなります)。

  • 失効を確認せずにチェーン信頼が構築されている場合、すべてが正常であると言えます。
  • チェーン信頼がEnd-Entity失効のみをチェックして構築されている場合、
    • CAがすべてを取り消す最終CRLを公開した場合、取り消されたと表示されます。
    • それ以外の場合は、すべてが正常であると言うでしょう。
  • チェーン信頼がルート以外のすべての場所で失効をチェックするように構築されている場合、失効したと言います。
  • チェーン信頼がチェーン全体の失効をチェックするように構築されている場合(ルートを「失効」させる最も簡単な方法は、信頼リストからルートを削除することなので、これは冗長です)、失効したと表示されます。

.NETのX509Chainクラスはデフォルトで、ルート以外のすべての失効をチェックします。 Win32 CertGetCertificateChain デフォルトでは失効なし(失効タイプはdwFlagsパラメータで指定する必要があります)。他のライブラリには異なるデフォルトがあり、アプリケーションはそれらをさまざまな方法で構成できます。

9
bartonjs