Hebikuzure's Tech Memo

2011年12月25日

Fiddler と Windows 8 Metro スタイル アプリケーション

Filed under: Internet Explorer — hebikuzure @ 10:39 PM

Fiddler and Windows 8 Metro-style applications
http://blogs.msdn.com/b/fiddler/archive/2011/09/14/fiddler-and-windows-8-metro-style-applications-https-and-private-network-capabilities.aspx

今回も Fiddler の製品ブログ (http://blogs.msdn.com/b/fiddler/) に掲載されている記事から、少し前の物ですが有益と思われる記事を一つ私訳しました。 Fiddler を Windows 8 で利用する場合、特に Metro スタイル アプリケーションの HTTP/HTTPS トラフィックをデバッグする場合の手順や注意事項が解説されています。

以下の文章は Fiddler Web Debugger の 9/14 の記事 Fiddler and Windows 8 Metro-style applications を hebikuzure が私的に試訳したものです。翻訳については Microsoft Corporation および日本マイクロソフト株式会社とは無関係に hebikuzure が公開情報に基づき独自に行ったものであり、この文書の内容についての文責は公開者である hebikuzure にあります。翻訳の内容および技術的内容については正確を期すよう十分な注意を払っておりますが、誤りや不正確な部分が含まれている可能性がありますので、本文書を利用される際には原文も併せてご確認ください。


Fiddler と Windows 8 Metro スタイル アプリケーション

EricLaw [MSFT]

2011年9月14日 午後1時39分

StackOverflow で、新しい Windows 8 のユーザーが Fiddler はどうしたら新しい Windows 8 Metro スタイル アプリケーションに対して利用できるようになるのかという質問をしていました。これらのアプリケーションは従来のデスクトップ アプリケーションと動作が幾分異なっており、 Fiddler を正しく動作させるには少し特別な設定を行う必要があります。

心配しないでください、Windows 8 と Fiddler は少しの工夫だけでうまく行くようになります。私の同僚の多くがここ数カ月の間、Metro スタイル アプリケーションのデバッグに Fiddler を使っています。

Windows 8 では Fiddler に影響のある三つの重要な変更がされています。

  1. .NET CLR 2.0 は既定ではインストールされていません
  2. Metro スタイル アプリケーションは (Fiddler が動作している) localhost と通信できる特定の機能が必要とされます
  3. Metro スタイル アプリケーションはユーザーごとの信頼されたルート証明書ストアを参照しません

これら三つのいずれについても、Fiddler を Windows 8 上で完全に機能させるための回避策があります。

DotNet ランタイム バージョン

既定では、Windows 8 は Common Language Runtime v4 と .NET Framework v4.5 を含んだ形で出荷されます。Fiddler は、しかしながら、現時点では多くの .NET Framework の 2.0、3.0、3.5 の含まれている PC にインストールされている v2.0 の CLR で動作するようコンパイルされています。Windows 8 で Fiddler を最初に起動すると、.NET Framework version 3.5 と v2.0 CLR をインストールして有効にするよう求めるプロンプトが表示されます:

何かの事情で古いバージョンの .NET CLR と Framework をインストールできない(または単にそうしたくない) 場合は、.NET Framework のバージョン 4 を対象としたベータ バージョンの Fiddler を試す事もできます。このビルドは現在 v2 をターゲットにしたリリースに順じた内容に若干のバグ フィックスを含んでいますが、定期的にアップデートされる予定です。いずれ、2007 年に v1.1 をターゲットにしていたバージョンを、v2 をターゲットにした Fiddler で置き換えたように、こちらが既定のパッケージになるでしょう。

Fiddler への接続にアプリケーション側の機能またはループパックの適用除外が必要

Windows 8 の Metro スタイル アプリケーションは、機能モデルに基づいてパーミッションが付与されるセキュリティー コンテナ (サンドボックス) 内で実行されます。アプリケーションは、自らのパッケージのマニフェストで指定された能力のみ付与されます。

[2011/12/10 更新: 以下の手順を簡略化する新しいユーティリティーについて、こちらの記事をご覧ください。]

Fiddler はローカル コンピューターで実行されているプロキシなので、Metro スタイル アプリケーションがそのトラフィックを Fiddler に送信するには、アプリケーションが privateNetworkClientServer パーミッションを宣言しているか、またはループバックの適用除外が作成されている必要があります。これらのいずれの設定もないと、アプリケーションはローカル コンピューターで実行されている Fiddler のプロキシに接続できず、そのため Fiddler はそのトラフィックを確認できません。

CheckNetIsolation LoopbackExempt により開発者は Fiddler や独自のデバッグ/テスト環境を、サンドボックスの機能を修正する事なく設定できます。一般的に言えば、CheckNetIsolation ツールを、privateNetworkClientServer の機能を付加するより先に利用すべきです。その方がテストするアプリケーションの挙動に与える影響が少なくなります。最近 Fiddler で CheckNetIsolation をどのように利用するのかについてのトークが行われています。このトークは “Debugging connected Windows 8 apps” で、こちらから見る事ができます。27分から34分にかけて Fiddler について、19分から34分にかけて CheckNetIsolation ツールの利用について語られています。アプリケーションの AppContainer を除外するには、管理者権限でコマンド プロンプトを開き、CheckNetIsolation LoopbackExempta -n=AppContainer’sFullName と入力します。

アプリケーションに機能を割り当てる方法についての詳細は、こちらのホワイトペーパーに含まれる To add capabilities to an app の文章をご覧ください。

Windows 8 のファイアウォールはモダン アプリケーションのループバック接続をブロックする

[2011/12/10 更新: このステップは最新の Fiddler v4 ビルドでは不要です]

ループバック接続がファイアウォールを通過するようにする必要もあります。そのための単純な方法は、Tools > Fiddler Options を開き、“Allow remote computers to connect” をチェックし、完了したら Fiddler を再起動します。

HTTPS を解読するために、Fiddler のルート証明書をコンピューターの信頼されたルート証明書ストアに配置する

Fiddler の HTTPS 解読機能は HTTPS トラフィックを解読するために中間者 (man-in-the-middle) アプローチに依存しています。この機能を有効にするにあたって、Fiddler は自己署名ルート証明書を個人用信頼済みストアにコピーするオプションを提供しています:

しかし、Metro スタイル アプリケーションはユーザー別の信頼されたルート証明機関ストアにのみインストールされている証明書を参照しません。Metro スタイル アプリケーションはローカル コンピューターの信頼されたルート証明書機関ストアに到達しない証明書チェインに遭遇すると、証明書チェインは不正であると判断し、HTTPS リクエストは失敗します。

これに対処するため、最新のバージョンの Fiddler では、Fiddler が Windows 8 で実行されていると検知された場合に、ローカル コンピューター全体の信頼されたルート証明機関ストアに Fiddler ルート証明書を配置するための機能を提供しています。上側のダイアログが表示された後、下側のダイアログが表示されます:

これらのダイアログで YesYes を選択すると、Fiddler は Metro スタイル アプリケーションからの HTTPS トラフィックを解読できるようになります。注: もし Windows 7 以前のバージョンの Windows でコンピューターの信頼されたルート証明書として Fiddler の証明書を配置したい場合は、設定の制御fiddler.certmaker.offermachinetrust という名前の項目を True にします。

もしご質問がありましたら、お知らせください。Windows 8 で開発していただきありがとうございます!

-Eric Lawrence

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。