9

私のアプリケーションでは、特定のURLに対してクライアント認証が必要です。クライアント認証が成功した後、アプリケーション自体もクライアント証明書の件名に対して何らかの検証を行います(Spring Security x509フィルターを使用)。特定のURLに対してクライアント認証(clientAuth = true)を強制するようにtomcatを構成したかったのですが、この投稿に基づくと、tomcatのみを使用してこれを行うことはできないようです-特定のURLパターンに対してのみクライアント認証用にtomcatを構成します

私の質問は、clientAuth = wantを使用する場合、サーバーが証明書を要求すると、次のようになります。

  1. デバイスにID証明書があるが、tomcat truststoreFileで構成されたCAによって信頼されていない場合、証明書は渡されず、要求はSpringセキュリティフィルターで失敗します(証明書はnullになります)
  2. デバイスにtomcattruststoreFileで構成されたCAによって信頼されたID証明書があるが、無効(どの検証が行われたかわからない)または期限切れの場合、認証はtomcatで失敗するか(セキュリティフィルターの前)、オプション1のように証明書は失敗します渡され、要求はSpringセキュリティフィルターで失敗します(証明書はnullになります)

このwant+セキュリティフィルターの構成を使用して欠落している可能性のあるセキュリティホールはありますか?質問は、証明書が最終的にデバイスからサーバーに渡された場合、clientAuth = wantを使用している場合でも、サーバーは常に証明書を検証し(期限切れではなく、信頼できるなど)、証明書が無効?証明書が渡されない場合は、証明書がnullでないことを確認するセキュリティフィルターでカバーされます。

ありがとう!

4

1 に答える 1

6

1.と2.の両方でのあなたの仮定は正しいです。Tomcatは、信頼できない証明書や無効な証明書をアプリケーションに渡すことを許可しません。nullの証明書を取得した場合は、証明書が渡されなかったか、信頼できない/無効な証明書が渡されたと見なすことができます。

私が取り組んでいるプロジェクトでは、あなたと同じ要件があります。特定のURLのクライアント証明書のみです。実験により、「clientAuth=want」がどのように機能するかがわかりました。

于 2013-12-02T18:59:56.697 に答える