web-dev-qa-db-ja.com

証明書チェーンに沿ったCRLおよびOCSP URLを修正します

私のネットワークでの私的な関心と使用法のために、opensslを使用して証明書チェーン(ルートCA→中間CA→サーバー証明書)を作成しています。証明書チェーンを追跡可能にし、証明書を取り消すこともできます。

現時点では、どのCRL配布ポイント(openssl構成音声のcrlDistributionPoints)とOSCP URI(authorityInfoAccess = OCSP;URI: ...およびauthorityInfoAccess = OCSP;caIssuers: ...)は、証明書の作成時に設定する正しいものです。いくつかの公開Webサイトの証明書を調べると、次のように進むべきだと私には思われます。それで、私が正しいかどうか確認してください。

ルートCA証明書:

  • CRL:ルートCA CRLまたはまったくなし
  • OCSP URI:ルートCAのOCSP URI、またはまったくなし
  • CA発行者:ルートCA証明書のURIまたはまったくなし

中間CA証明書:

  • CRL:ルートCA CRL
  • OCSP URI:ルートCAのOCSP URI
  • CA発行者:ルートCAのURI

サーバー証明書:

  • CRL:中間CA CRL
  • OCSP URI:中間CA *のOCSP URI)
  • CA発行者:中間CAのURI

*)1つのOCSPレスポンダがルートand中間CAのOSCP要求を処理できるようです。その場合、ルートCAのOSCP URIを使用することもできますか?

そのため、すべての証明書データは、自身の有効性を確認できる場所を「1つ上のレベル」にポイントする必要があります。あれは正しいですか?

前もって感謝します!

1
ahuemmer

ルート証明書はすでにアプリケーションで認識されているため、これらのフィールドはすべて意味がありません。失効させる唯一の方法は、アプリケーションを変更することです。ルートが信頼されていること、またはルートを信頼する必要がない(つまり、取り消す)ことを証明するために、ルートCAよりも信頼できるCAはありません。

これらのフィールドはすべてオプションであり、公的に信頼された認証局に必要なものを定義するベースライン要件は、中間CA証明書のCRL配布ポイントのみを必要とします。

CRL配布ポイント

CRL配布ポイントの場合、URIのみを指定すると、失効した場合にこの証明書への参照が含まれる、同じ発行者によって署名されたCRLを指すと見なされます。認証局によって発行されたすべての証明書が同じCRL配布ポイントを持つ必要はありません。CRLが大きくなりすぎないようにこれらをセグメント化できます(たとえば、発行される1000証明書ごとに、CRL配布ポイントを変更し、そのURLのCRLには、それらの1000証明書への参照のみが含まれます。

ただし、CRL配布ポイントでURLに加えてcrlIssuerフィールドを指定して、CRLが別のCAによって署名されることを指定することもできます。したがって、リーフ証明書と中間証明書で同じCRLをポイントし、crlIssuerがルート証明書であることをリーフ証明書で指定することもできますが、その場合はルート証明書を使用してリーフを取り消す必要があります...

OCSP URI

OCSP URIの場合、証明書にOCSP応答を提供できるOCSPサーバーを指す必要があります。 CRLと同様に、特定のCAが発行するすべての証明書に同じサーバーを使用する必要はなく、それをセグメント化することもできますが、OCSPの回答はCAが発行する証明書の数に応じて増加しないため、これはあまり一般的ではありません。他の証明書で使用されているものと同じURLを指すこともできます。 OCSPがチェックされる証明書の識別子はOCSPクエリで提供されるため、サーバーは複数のCAを処理する場合でも正しい答えで応答できます。

CA発行者

存在する場合、CA発行者は、証明書を発行した証明書を含むURLをポイントする必要がありますが、そのURLには、証明書のみのCMSメッセージとしてエンコードされた複数の証明書を含めることができます。私はその可能性が頻繁に使用されていることに気づいていません。

参考文献

これはすべて RFC528セクション4.2.1.1 のCRL配布ポイントの場合、および セクション4.2.2.1 の権限情報アクセス(OCSPおよびCA発行者)。

2
user2313067