ケース1には、secp384ベースのEC証明書を使用するクライアントとサーバーの両方でのTLS +クライアント証明書認証が含まれます。この場合、フィドラーを介してトラフィックを監視すると、トンネリング/ハンドシェイクと暗号化されたトラフィックがフィドラーから完全に失われます(何も起こらないように)。クライアントとサーバーの両方を個別に監視することにより、実際のトラフィックが存在することがわかります。
ケース2には、同じクライアントプロセス、同じサーバープロセス、同じサーバー証明書が含まれますが、クライアント証明書認証が無効になります。この場合、すべてのトラフィックと最初のハンドシェイクがFiddler内でキャプチャされます。
これはFiddlerの既知の制限ですか?はいの場合、ケース1で発生するTLSハンドシェイクを他にどのようにキャプチャできますか?そうでない場合、Fiddler内の設定がありませんか?私はaC:\Users\<username>\My Documents\Fiddler2\ClientCertificate.cer
設定も...
Fiddlerは、目的のサーバーの偽の証明書をオンザフライで生成してHTTPSトラフィックをキャプチャし、完全な Man-in-the-Middle攻撃 を実行します。これには、クライアントがFiddlerによって制御されるCAを信頼できるCAとして受け入れるように構成されている必要があります ドキュメントに記載されています 。
この種の傍受はクライアント証明書を破壊します。 SSL/TLSにクライアント証明書がある場合、クライアントは技術的にsigns(ハンドシェイク中)これまでに送受信されたすべてのハンドシェイクメッセージのハッシュに相当します。クライアントによって計算された署名は、クライアントから見たサーバー証明書(とりわけ)をカバーします。つまり、本物のサーバーの証明書ではなく、Fiddlerによって生成された偽の証明書です。したがって、クライアントの署名は、サーバーが表示したハンドシェイクメッセージと一致しません。
documentation が信頼できる場合、Fiddlercanで修正しますが、これにはFiddlerがクライアントの署名を再計算する必要があります。これは、Fiddlerがクライアントの秘密鍵にアクセスできる場合にのみ機能します。 「.cer」ファイルでは不十分です。 秘密鍵が必要です。ドキュメントは少し不明確です。私の推測では、Fiddlerは「.cer」ファイルを使用して、使用するクライアント証明書を認識しています。thenは、ローカルユーザーの証明書ストア( Fiddlerのドキュメントでは、証明書を最初に「.pfxファイルとして」、つまり対応する秘密鍵でインポートし、次に「.cer」ファイルをエクスポートするように指示されているのはこのためです。いずれの場合でも、クライアントの秘密鍵にアクセスしないと、Fiddlerはサーバーと通信するときに真のクライアントになりすますことができません。
現在、FiddlerはEC証明書に関してalsoに制限がある可能性があります。わからない。上記で説明したことから、Fiddlerは本物のサーバーと通信するときにTLSクライアントとして実行する必要があるため、クライアントEC証明書がある場合、Fiddlerのコードはそれをサポートする必要があります。つまり、FiddlerはECDSA署名を生成できる必要があります。
ドキュメントから、秘密キーがクライアントマシン(Windowsシステム)の内部に残っていることがわかります。したがって、署名の生成では、Windowsが提供する暗号化APIを通過する必要があります。 Windowsにはtwo完全に異なるAPIがあります: CryptoAPI および [〜#〜] cng [〜#〜] 。 CryptoAPIは古いものです。 CNGはWindows Vistaおよび2008で導入されました。アプリケーション(Fiddlerなど)の観点から、CNGで保存および管理される秘密鍵は特定の関数呼び出しでのみ使用できます。 CryptoAPIのみを認識するアプリケーションcannotは、CNGに格納された秘密鍵を使用します。
残念ながら、CryptoAPIは楕円曲線をサポートしていません。 ECベースのキーは、CNGを介してのみ使用できます。さらに、Fiddlerは.NETで記述されていると言われており、.NETの暗号化APIはCryptoAPIのみに依存しています(canはCNGを使用しますが、明示的に呼び出す必要があります)ネイティブDLL ncrypt.dll
およびbcrypt.dll
)。したがって、FiddlerがCryptoAPIのみを使用しているため、かなり可能性があるであることがわかり、クライアント証明書のECAキーではなく、RSAキーとDSAキーのみがサポートされる可能性があります。