web-dev-qa-db-ja.com

Windowsでは、証明書を信頼するために完全な証明書チェーンが必要ですか?

ルートCAをまとめて、複数の中間CAに署名します。中間CAは、VPNサーバーとVPNユーザーの証明書の署名に使用されます。

ユーザーに証明書を提供するとき、理想的には、ユーザーにキーペア/証明書と署名中間者の証明書のみを提供します。これは、ルートCAが危険にさらされている場合、ユーザーが直接それを信頼していなければ、その危険性は最小限であることを意味します。

上記の設定をテストして、中間CA証明書をWindows 10マシンにインポートし、その後にユーザー証明書をインポートしましたが、証明書には「Windowsにはこの証明書を検証するための十分な情報がありません」という警告が表示されています。

ルートCA証明書をインポートするとその問題が解決されると思いますが、発行された中間CAの証明書がそこから証明書を信頼するために発行されている場合、Windowsが完全なチェーンを必要とするのはなぜですか?

2
bdx

PKIはCA証明書に基づいています。CA証明書は、他の証明書を保証するために信頼する証明書です。

CAの証明書は常にコピーされます。 「bdxCA」としましょう

Bobが「こんにちは、Bobです。これがbdxCAによって署名された私の証明書です」という証明書が付属している場合、コンピューターはbdxCAのコピーを検索し、証明書に署名し、指定された目的でbdxCAを信頼していることを確認します(例:ユーザー身元)。

中間CAが登場します。これらは、他の証明書に署名することはできますが、直接は信頼していませんが、その信頼は「実際の」CAに由来します。

したがって、それ自体がボブ証明書に署名するbdxCA署名bdx_HR_CAを持っている可能性があります。ここで、ボブは自身の証明書を中間証明書として提供する必要があります。「こんにちは、ボブです。bdx_HR_CAによって署名された私の証明書です。bdxCAによって署名されていることがわかります。」あなたはそれが本当に事実であることを確認し、それを受け入れます。

ボブが中間証明書を提供しなかった場合、それは受け入れられる場合とされない場合があります。受信側にbdx_HR_CAのコピーがない場合、それらはそれを検証できず、したがって拒否されます。ただし、中間CAがローカルにインポートされた(それで見つけられるようになる)か、アリスが自分の証明書とbdx_HR_CA証明書をすでに示していたため、後者が自動的に保存された可能性があります。さらに、証明書には親(中間)証明書をダウンロードできるURLが含まれている場合があり、特定のクライアントはそれらを効果的にダウンロードできます。

このすべてが原因で、中間証明書が欠落している場合、使用するソフトウェアと以前のマシン履歴に応じて、証明書が検証される場合と検証されない場合があります。これらはすべて、一貫性のない問題を引き起こしますときどき失敗。

次に、CA証明書が別のCAによって署名されることも可能です。これは通常、新しいCAがすべてのクライアントから信頼されていない場合に行われます。信頼できる別のCAによってCAに署名すると、このCAが発行した証明書を信頼することができます(中間CAとして扱うことにより)。

あなたの場合、CA証明書をインポートしましたが、それを信頼できるものとしてマークしていない可能性があるため、Windowsには、それを検証するための信頼できるCAへのルートがありません。

最後に、ユースケースはVPNサーバーとVPNユーザーの証明書に関するものであるため、これらは通常、独自のCAを使用し、サーバーのCAはVPN構成内で提供されることに注意してください。その場合、VPNクライアントはVPN証明書が期待どおりのものであるかどうかをVPNクライアントがチェックするだけなので、それがWindowsによって信頼されているかどうかは問題ではありません。

1
Ángel

これは、ルートCAが危険にさらされている場合、ユーザーが直接それを信頼していない限り、その危険性は最小限であることを意味します。

上記は意味がありません。ルートCA証明書の別名はtrust-anchorです。信頼のアンカーとして、下位CAとその後のエンドエンティティ証明書が信頼されるようにするには、それをインストールする必要があります。チェーンが下位CAから始まると予想する場合、つまり下位CAがトラストアンカーであると予想する場合、ルートCAのポイントは何ですか。成功したのは、証明書チェーンを1つ短くすることだけです。下位のCAを危険にさらすと、同じ想定される問題が発生します。

ルートCAが危険にさらされていることが懸念される場合は(そうする必要があります)、使用していないときはルートCAをオフにして、ネットワークに接続しないでください(たとえば、ファイルの移動にUSBスティックを使用します)。それでも心配な場合は、ハードウェアセキュリティモジュールに投資して、ルートCAの秘密鍵を保存してください。さらに良いことに、1つはルートCAに、もう1つは下位CAに投資します。

ユーザーに証明書を提供するとき、理想的には、ユーザーにキーペア/証明書と署名中間者の証明書のみを提供します。

これがクライアント証明書を提示する正しい方法です。 VPNクライアントは両方をサーバーに送信します。その時点で、サーバーはそれらを使用して、トラストアンカーストアにあるルートCA証明書へのチェーンを構築します。すべてが順調であれば、これはクライアントを検証します。

同様に、サーバーはその証明書を(下位のCA証明書とともに)提示し、クライアントはこの証明書を使用して、トラストアンカーストア内のルートCA証明書へのチェーンを構築します。ルートCAがインストールされていない場合、VPNクライアントが信頼することを選択したことを確認する方法はありません。

これは相互認証であり、2つのことが行われています。

  1. サーバーはルートCA証明書を含むすべての証明書をクライアントに送信し、クライアントはトラストアンカーストアにインストールされているルートCA証明書と照合します。
  2. クライアントは、ルートCA証明書を含むすべての証明書をサーバーに送信します。サーバーは、トラストアンカーストアにインストールされているルートCA証明書と照合します。
1
garethTheRed