web-dev-qa-db-ja.com

CAを信頼してCRLに署名し、証明書には署名しない方法は?

私のアプリケーションでは、取り消し証明書に信頼されている(つまり、CRLに署名することによって)が、(新しい)証明書に署名することは信頼されていない多くの当事者がいます。

証明書ではなく、CRLに対してのみ信頼されるようにCAをマークするにはどうすればよいですか? CAの証明書にこれをマークする方法はありますか?

アプリケーションはこれをどの程度サポートしますか?私の目的のアプリケーションはopensslとstrongswanです。

4
SRobertJames

エンティティが証明書ではなくCRLに署名することになっている場合、それはCAではありません-CRL発行者です。これは、indirectCRL発行者と呼ばれることがよくあります。これは、CRLによって失効ステータスが指定されている証明書を発行したCAとは定義が異なるためです。

証明書は、(特に)値cAフラグに値TRUEが含まれる Basic Constraints 拡張がある場合にのみ、CAとして検証されます。 CRL発行者証明書をCA証明書と間違えたくない場合は、Basic Constraints拡張子が含まれていないこと、またはそのような拡張子が含まれている場合はcAフラグの値はFALSEです。

証明書をCRL発行者として受け入れられるようにするには、他に次のことを行う必要があります。

  • Key Usage 拡張子がある場合、cRLSignフラグが設定されます。

  • CRLには、indirectCRLフラグがTRUEに設定された Issuing Distribution Point 拡張を含める必要があります。

  • CRL発行者名とIDP拡張機能の内容は、CRLを通じてステータスがアサートされる証明書の CRL Distribution Points 拡張機能の内容と一致する必要があります。ルールは 複雑 です。

間接CRLのサポートは不十分です。特に、CRL発行者の証明書はCAではないため、メインの証明書チェーンの一部ではありません。そのため、たとえば、SSLクライアントおよびサーバーによって送信される証明書のセットには含まれません。したがって、間接CRLは、追加の証明書をダウンロードする準備ができているシステム、または他の方法でそのような証明書を利用できるシステムでのみ使用できます。

8
Tom Leek