web-dev-qa-db-ja.com

シナリオで証明書を使用せずにTLSが提供する保証は何ですか?

次のようなモジュール式システムがあるシナリオを想定します。

  1. インターネットユーザーのユーザー名とパスワードを取得し、ユーザーにトークンを発行する認証モジュール(AM)。ユーザー<-> AM通信はTLSによって保護されており、AMには既知の認証局からの証明書があります。

  2. ユーザーからの{Token、Request}を受け入れ、AMを使用してトークンを検証し、リクエストを処理するいくつかのサービス。各サービスは独立したサーバーに実装されています。

トークンは無記名トークンです。ユーザーサービス通信でTLSを有効にする場合、中間者攻撃が不可能であり、トークンが機密のままであることを確認するために、各(サービス)サーバーの証明書を取得する必要がありますか?

1
Reza

はい

サーバーが証明書を提示しない(または検証しない)場合、クライアントは想定されるサーバーに{Token、Request}を喜んで与えます。 MITMはサーバーとして機能し、トークンとリクエストを受け取り、それらを実サーバーに渡すことができます。

ただし、パブリックCAによって署名される必要はありません。自分のPKI(これらの証明書に署名するためのプライベートCA)を使用していると、生活が楽になります。

1
Ángel

ユーザーがサーバーと通信しているとき、ユーザーは、真ん中の攻撃者の男性ではなく、実際にサービスに話していることを確認する必要があります。これは通常、証明書を使用して行われます。通常のwebpki証明書(Let's Encryptなど)を使用するのが最も便利ですが、使用できない場合は、固定された自己署名証明書を使用するか、サービスに証明書を発行する独自のCAを使用できます。これはすべて、クライアントの構成をどのように管理するかによって異なります。クライアントは、信頼するキーを知る必要があり、そのキーをローテーションする必要がある場合は更新する必要があります。

0
Z.T.