6

期待どおりに動作しない他の誰かによって作成されたGUIJavaプログラムを使用しようとしています。プログラムの操作中に、サーバーに接続してデータをプルダウンしますが、正しいデータが表示されません。私が経験している問題がネットワーク関連であるかどうかを確認しようとしています---つまり、適切なビットがクライアントに到達することはありません。

Javaプログラムのソースコードを見ると、SSLを介してサーバーからデータをプルするためにHttpsURLConnectionクラスを使用しているように見えます。私ができるようにしたいのは、Wiresharkを使用してワイヤー上で何が起こっているかを検査することです。私の理解では、関連するキーがある場合、Wiresharkは一部のSSLトラフィックの復号化をサポートしています。サーバーを制御していないため、サーバーの秘密鍵にアクセスできません。ただし、プログラムが実行されているクライアントは制御します。私の質問は、今説明したシナリオのSSLトラフィックを復号化するようにwiresharkを実際にどのように構成するかということです。HttpsURLConnectionが使用する特定のキーをWiresharkに追加できますか?他に何かありますか?

単にJavaコードベースにロギングを追加することを検討しましたが、コードベースのロギングで重要な何かを見逃したり省略したりする可能性があるため、最終的にはロギングよりもパケットキャプチャのグラウンドトゥルースを好むことに注意してください。理解する。

4

2 に答える 2

6

サーバーの秘密鍵にアクセスできないため、Wireshark を使用して直接復号化することはできません。

完全転送秘密 (PFS) の暗号が使用されている場合、秘密キーを使用しても、Wireshark はトラフィックを復号化できません。

必要なのは、アプリケーションの観点からは SSL サーバーのように機能し、サーバーの観点からはクライアントのように機能する中間者プロキシです。

.Net/Windows 上のFiddler 、 WebscarabBurpSuite (Java)など、プロキシとして動作できるプログラムは多数あります。これらすべてのプログラムについて、使用されているサーバー証明書をエクスポートし、それを信頼できる証明書としてプログラムに追加する必要があります。たとえば、アプリを起動するときにコマンドラインで適切なトラスト ストアを指定します (Java プロパティを参照javax.net.ssl.trustStrore)。

于 2012-07-21T13:57:15.400 に答える
2

extract-ssl-secretsツールを使用して、任意の Java アプリケーションから Wireshark が必要とするキーを抽出できます。

  • https://repo1.maven.org/maven2/name/neykov/extract-ssl-secrets/1.0.0/extract-ssl-secrets-1.0.0.jarから jar をローカルにダウンロードします。ファイル名は必ずextract-ssl-secrets-1.0.0.jarと同じにしてください。
  • -javaagent:<absolute path to>/extract-ssl-secrets-1.0.0.jar=/tmp/secrets.log"アプリケーションの VM オプションに追加します。
  • でWiresharkを開始wireshark -o ssl.keylog_file:/tmp/secrets.log
  • トラフィックのキャプチャを開始します - オンザフライで復号化する必要があります

箱から出してすぐに機能しない場合は、トラブルシューティングのセクションを参照してください。

于 2016-12-13T19:01:25.033 に答える