web-dev-qa-db-ja.com

チェーンの一部ではない場合、IE / Chromeはどの中間CAを使用するかをどのようにして知るのですか?

ネットワーク上のサーバーは、RapidSSL CAによって発行された証明書で署名されていますが、発行者チェーン全体を提供していません(RapidSSL CAの証明書は、信頼されたルート証明機関であるGeoTrust CAによって発行されています)。

Firefoxを使用してサイトにアクセスすると、次のエラーが発生します。

The certificate is not trusted because no issuer chain was provided.
(Error code: sec_error_unknown_issuer)

しかし、IEまたはchromeを使用してサイトに接続すると、動作し、その後、RapidSSLが中間CAとしてロードされることに気付きました。わかりません。 Chrome/IE(Windows証明書ストアを使用していると思います)がRapidSSLを中間CAとして追加する方法を知っています。

openssl s_client接続をデバッグします。

ジオトラストをCAとしてのみ使用すると、次のようになります。

Verify return code: 21 (unable to verify the first certificate)

CAとしてRapidSSLのみを使用:

Verify return code: 2 (unable to get issuer certificate)

両方を使用する場合:

Verify return code: 0 (ok)

WindowsがRapidSSLCAを中間機関としてロードする方法を理解するのを誰かが助けてくれますか?

6
Wilhelm Kleu

CA証明書は、発行された証明書の機関情報アクセス(AIA)拡張のURL情報に基づいてダウンロードされます。

最後に聞いたFirefoxは、独自の証明書ストアやチェーンエンジンを使用しています。 ChromeおよびIE Windowsで使用します。


証明書の検証プロセス

証明書がアプリケーションに提示されると、アプリケーションは証明書チェーンエンジンを使用して、証明書の有効性を判断する必要があります。証明書チェーンが正常に検証された後でのみ、アプリケーションは証明書と証明書によって表されるIDを信頼できます。証明書の有効性を判断するために、3つの異なるが相互に関連するプロセスが使用されます。

証明書の検出証明書チェーンを構築するには、証明書チェーンエンジンが発行CA証明書とルートCA証明書までのすべてのCA証明書を収集する必要があります。 CA証明書は、CryptoAPIキャッシュ、グループポリシー、またはエンタープライズポリシーから収集されるか、最後の手段として、発行された証明書のAuthority Information Access(AIA)ユニフォームリソースロケーター(URL)からダウンロードされます。証明書がCryptoAPIキャッシュ以外の場所からダウンロードされると、取得を高速化するためにユーザーのCryptoAPIキャッシュに追加されます。

パスの検証証明書チェーンエンジンが証明書を検証しても、提示された証明書で停止しません。証明書チェーン内の各証明書は、自己署名ルート証明書に到達するまで検証する必要があります。検証テストには、オーセンティケード署名の検証、発行CA証明書がNTAuthストアに含まれているかどうかの判別、または特定のアプリケーションまたは証明書ポリシーオブジェクト識別子(OID)の包含が含まれます。 1つの証明書が有効性テストに合格しない場合、チェーン全体が無効であると見なされ、呼び出し元のアプリケーションで使用されない可能性があります。

9
Ryan Ries

それは確かに異なる証明書ストアです。中間体は、それらの証明書がまだ組み込まれていないアプリでのみ必要です。発行者CAはすべての証明書に含まれています。唯一の問題は、その発行者証明書が信頼できるかどうかです。中間体を追加すると、デフォルトでインストールされる信頼できる証明書のセットが少ないソフトウェアで役立ちます。 。

1
Tim Brigham