私は学校でネットワークセキュリティに関するコースを受講しています。実験的な演習で、Man-In-The-Middle(SSL)アプリを携帯電話にインストールし、証明書(秘密鍵を内部に含む)を携帯電話にインストールするように依頼されました。
私の質問:
アプリ(プロキシである可能性があります)を装うための偽の証明書を生成するために使用される証明書は、クライアントが要求するサーバーですか?
この種の証明書の中に秘密鍵があるのはなぜですか?ここで使用される秘密鍵は何ですか?
私があなたを正しく理解し、電話アプリがMITMを実行していると仮定すると、次のようになります。
1)はい-通常、アクセスしたすべてのWebサイトの新しい証明書を(オンザフライで)作成するためのルートCAとして使用されます。そのルートCAの公開鍵は、ブラウザによって信頼されている必要があります。
2)秘密鍵は、後続のすべての証明書(サイト用)に署名するために使用されるため、必要になります。 MITMアプリは秘密鍵を使用してサイト証明書を生成し、ブラウザーは公開鍵を使用してそれを検証します。
アプリ(プロキシである可能性があります)を装うための偽の証明書を生成するために使用される証明書は、クライアントが要求するサーバーですか?
はい、この証明書は、アプリがサーバーになりすますために使用されます。人々はしばしば証明書が何のために使われるのか誤解します。これらは、クライアントではなくサーバーを認証するために使用されます。そのため、アプリが実サーバーになりすます場合、アプリのIDを証明する証明書を提供する必要があります。
この種の証明書の中に秘密鍵があるのはなぜですか?ここで使用される秘密鍵は何ですか?
証明書に存在する秘密鍵は、証明書の生成に使用されるものです。
Digital Oceanには、証明書、秘密鍵、および証明書の生成に関する優れたリファレンスがあります