6

トラスト ストアにルート CA 証明書のみを含める必要がある場合 (これは、私が読んだことから推奨されているようです)、特定の関係者 (信頼ストア内の CA によって検証された関係者ではなく) へのアクセスをどのように制限できますか?

詳細については:

SSL を使用して通信を保護する 2 つの Java アプリケーション (A と B と呼びましょう) があります。A と B はどちらも、メッセージを送信 (クライアント) および受信 (サーバー) するためのクライアント部分とサーバー部分を持っています。クライアントは client.keystore に格納された鍵を使用し、サーバーは server.keystore に格納された鍵を使用し、どちらも単一のトラスト ストアを使用して他のアプリの ID を検証します (つまり、アプリ A には 3 つのキーストアがあり、アプリ B には 3 つのキーストアがあります)。 .

これまでのところ、keytools を使用してクライアントとサーバーの鍵を生成し、(自分のテスト CA で) 署名し、署名済み証明書をキーストアにロードしました。アプリ A と B に対してこれを行います。SSL ハンドシェイクを完了するには、他のアプリ キーの署名に使用される CA 証明書をトラストストアに含める必要があることがわかりました (そのため、アプリ A のトラストストアには CA 証明書を含める必要があります)。アプリ B のクライアント キーとサーバー キーの署名に使用され、その逆も同様です)。

これまでのところこれは理にかなっていますが、トラスト ストアにはルート CA 証明書が含まれているため、別のキーのセットを生成し、同じ CA で署名し、他のアプリに受け入れさせることができます。つまり、アプリ B は不正を受け入れます。ルート CA によって署名されたキーがある限り、アプリ A のように見えるエージェント。

SSL にはこれを防ぐメカニズムがありますか? アプリ A のクライアントとサーバーの公開鍵をアプリ B のトラスト ストアにインポートしようとしましたが (逆も同様)、ルート証明書がないと SSL ハンドシェイクは完了しません。

4

1 に答える 1