WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

Firefox で Fiddler を使う方法

by WebSurfer 20. June 2021 12:29

ブラウザに Firefox を使った場合に、要求・応答を Fiddler でキャプチャするにはどうしたら良いかということを書きます。

Fiddler

Fiddler はプロキシとして動き、ブラウザとネットの間の HTTP トラフィックを自動的にキャプチャするツールです。

Fiddler を使うたびユーザーが手動でプロキシの設定を行う必要はありません。Fiddler を起動すると、以下のように自動的にシステムのプロキシが設定され、ブラウザがそのプロキシを使うように設定されていれば Fiddler がトラフィックをキャプチャできるようになります。

なので、ブラウザに Firefox を使う場合も、先の記事「Fiddler のお勧め」に書きましたように Firefox のインターネット接続の設定でシステムのプロキシを利用するオプションを選択しておけば、Fiddler を立ち上げただけで要求応答をキャプチャすることができます。

しかしながら、HTTPS 通信を行う場合はプロキシの設定だけではダメです。Fiddler を通すと下の画像のようにサーバー証明書が信頼できないという警告が出ます。無視して続行しても CSS などがダウンロードできないようで表示が崩れてしまい使い物になりません。

証明書の警告画面

その理由は、Telerik のサイトの Configuring Firefox for Fiddler によると、"This message is shown because Firefox does not use the Windows Trusted Certificate Authority list; it instead has its own list of trusted certificates." ということだそうです。

ちなみに、Fiddler の証明書は DO_NOT_TRUST_FiddlerRoot という名前を持つもので、それは OS の「信頼されたルート証明機関」の中に含まれていました。下の画像を見てください。

Fiddler のサーバー証明書

自分ではインストールした覚えはないので、Fiddler により自動的にインストールされたようです。IE11, Edge, Chrome, Opera はこれを使うので Fiddler を使っても Firefox のような証明書の問題は出ないということのようです。

対処方法は上に紹介した Telerik のサイトの記事に書いてあります。簡単に書くと、Fiddler から証明書をエクスポートして、それを Firefox にインポートするということになります。

Telerik のサイトの記事の画像は古いバージョンの Fiddler, Firefox ものですので、この記事を書いている時点での最新版 Fiddler v5.0.20204.45441 と Firefox v89.0.1 の画像を貼って説明しておきます。

まず Fiddler の証明書をエクスポートします。Fiddler を起動し、メニューバーの[Tools]⇒[Options...]をクリックして Options ダイアログを表示し[HTTPS]タブを選択します。

[HTTPS]タブの中の[Actions]ボタンをクリックすると下の画像のようにリストが表示されますので、リストの中の[Export Root Certificate to Desktop]クリックすると FiddlerRoot.cer という名前の証明書が PC のデスクトップにエクスポートされます。

Fiddler の証明書のエクスポート

次に、Fiddler からエクスポートした証明書 FiddlerRoot.cer を Firefox にインストールします。

Firefox を起動し、設定の「プライバシーとセキュリティ」メニューの「証明書」の項目にある[証明書を表示...(C)]ボタンをクリックし「証明書マネージャー」を表示します。

Firefox の証明書マネージャー

「証明書マネージャー」の[認証局証明書]タブを選択し[インポート(M)...]ボタンをクリックすると証明書を選択するダイアログが表示されるので、デスクトップにエクスポートした Fiddler の証明書 FiddlerRoot.cer を選択します。

選択すると「証明書のインポート」ダイアログが表示されるので、[この認証局によるウェブサイトの識別を信頼する]にチェックを入れて[OK]ボタンをクリックします。

証明書のインポート

これにより、「証明書マネージャー」の証明書一覧の中に DO_NOT_TRUST_FiddlerRoot という名前の証明書が含まれているはずですので確認してください。

ここまでの操作で Firefox の HTTPS 通信で Fiddler を使っても警告は出なくなり、Fiddler によりトラフィックを自動的にキャプチャできるようになります。


ただ、問題がまだ残っていて、Visual Studio から開発中の Web アプリを立ち上げて IIS Express で動かす場合、HTTPS 通信ではトラフィックがキャプチャできません

違いは localhost が相手になるということと、サーバー証明書は Visual Studio が発行した開発用のものになることぐらいだと思います。いろいろ調べてみたのですが原因が分からず解決できていませんが、とりあえず調べたことを以下に書いておきます。

Visual Studio が発行したサーバー証明書は以下の通りです。IIS Express が使うのは一番下の IIS Express Develpment Certificate です (その上は多分 Kestrel が使うものだと思います)。

開発用のサーバー証明書

試しに、一番下の IIS Express Develpment Certificate をエクスポートして Firefox にインポートしようとしたのですが、「この証明書は認証局に証明書ではないため、認証局の一覧には追加できません。」と表示されてインポートできませんでした。

Microsoft のドキュメント Trust the HTTPS certificate with Firefox to prevent SEC_ERROR_INADEQUATE_KEY_USAGE error によると "The Firefox browser uses it's own certificate store, and therefore doesn't trust the IIS Express or Kestrel developer certificates." とのことで、開発用サーバー証明書は Firefox では使えないということのようです。

その記事の少し下のセクション Configure trust of HTTPS certificate using Firefox browser に書いてある通り、Firefox の設定で security.enterprise_roots.enabled = true としてみました。しかし、依然として Fiddler では Firefox の HTTPS 通信はキャプチャできませんでした。

ちなみに、security.enterprise_roots.enabled = false (デフォルト) の場合、Firefox で開発中の Web アプリにアクセスすると以下の警告が出ます。Fiddler を通しても通さなくても同じ警告になります

localhost への接続の安全性

上の画像の[詳細の表示]をクリックすると以下のダイアログが表示されます。そこに表示されている「検証され信頼できる運営者情報ではありません」というところが問題になっているようです。

Firefox のページ情報

security.enterprise_roots.enabled = true に設定すると、表示は以下のように「接続は安全」と変わります。ただし、Mozilla は証明書の発行者を承認していないそうですし、[詳細の表示]をクリックして表示されるダイアログの情報の「検証され信頼できる運営者情報ではありません」というのも変わりません。

localhost への接続の安全性

開発用のサーバー証明書が「検証され信頼できる運営者情報ではありません」ということが Fiddler でキャプチャできない原因であろうと思いますが、localhost が相手ということにも何かあるのかもしれません。(IE と .NET Framework は localhost の要求をプロキシを通して送らないようにハードコードされているということらしいですが、Firefox にも何かあっても不思議ではないですし)

今日はもうこれ以上調べる気力がなくなったので、今後の課題ということにしたいと思います。(汗)

Tags: , ,

DevelopmentTools

Entity Framework 6 Power Tools

by WebSurfer 19. August 2020 15:12

Entity Framework Code First でデータベースを生成するときに作成するコンテキストクラスから、各テーブルに属するプロパティとテーブル間のリレーションを現すダイアグラムを表示するツールを紹介します。(注: .NET Framework 用です。Core には使えません)

EDM ダイアグラム

上の画像がそのツールを使って表示したダイアグラムです。(既存のデータベースから Visual Studio の ADO.NET Entity Data Model デザイナを使って EDM を作る場合はここで紹介するツールは不要で、自動生成される .edmx ファイルに表示されます。具体例は、先の記事「スキャフォールディング機能」のステップ 1 ~ 10 参照)

ツールは Microsoft の ASP.NET MVC5 のチュートリアルの「Entity Framework パワーツール」に紹介されているものです。以下のサイトからダウンロードできます。

Entity Framework 6 Power Tools Community Edition

ダウンロードした EFPowerTools.vsix を実行すればツールは Visual Studio に自動的にインストールされます(VS2015, VS2019 で確認。VS2017 は持ってないので不明)。下の画像は VS2019 に拡張機能としてインストールされたところです。

拡張機能にインストール

使い方は次の通りです。

例えば、Entity Framework Code First でデータベースを生成するために以下のようなコンテキストクラスを定義したとします。

コンテキストクラス

Visual Studio のソリューションエクスプローラーからそのファイル(下の画像の SchoolContext.cs)を右クリックし、表示されたメニューから[View Entity Data Model (Read-only)]を選択します。

View Entity Data Model (Read-only)

そうすればこの記事の一番上の画像の通り Entity Data Model のダイアグラムが表示されます。

Tags: , ,

DevelopmentTools

Visual Studio 2019 がフリーズする

by WebSurfer 21. June 2020 13:30

2020/7/10 追記: Developer Community フォーラムによると、この記事の問題は v16.6.3 で fix されているそうです。自分も v16.6.3 にバージョンアップ後は問題ないことを確認しました。

自分が使っている Visual Studio Cummunity 2019 のバージョンを 16.6.0 にアップグレードした後、[ヘルプ(H)]⇒[Microsoft Visual Studio のバージョン情報(A)]でバージョン情報を表示しようとすると、

ヘルプでバージョン情報を表示

以下の画像で示したようにビジー状態となってしまいます。一旦こうなってしまうと Visual Studio の操作が不能になってしまい、タスクマネージャーで Visual Studio を終了する他手がなくなってしまいます。

VS2019 がビジー状態

4 月に MySQL 8.0.19 をインストールしたのですが、その時同時にインストールされた MySQL for Visual Studio v1.2.9 との相性の問題が原因のようで、それを Visual Studio の[拡張機能(X)]⇒[拡張機能の管理()]で表示される「拡張機能の管理」ダイアログで無効にすると、

拡張機能の管理

以下の画像の通りバージョン情報は表示されるようになりました。(MySQL の何をインストールしたかの詳細は、先の記事「MySQL をインストールしました(その 3)」を参照ください)

バージョン情報

調べてみると、Microsoft の Developer Community フォーラム About Microsoft Visual Studio frozen で報告が上がっていて、MySQL for Visual Studio 以外にも Oracle Developer Tools for Visual Studio 2019 Version: 19.3.1.0 で同様な問題が出るそうです。

というわけで、どうしても Oracle の開発ツールを使う必要がある時以外は無効にしておいた方が良いかもしれません。自分が使ってきた限りではバージョン情報の表示以外の不具合は気が付かなかったのですが・・・

Developer Community フォーラムによると "A fix for this issue has been internally implemented and is being prepared for release." とのことですので、そのうち修正されることを期待してます。

Tags: , , ,

DevelopmentTools

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  October 2021  >>
MoTuWeThFrSaSu
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

View posts in large calendar