36

Fiddler2 を使用して (または試みて)、https Web サービスにアクセスする Windows デスクトップ ガジェットの SSL トラフィックをキャプチャしています。以前は機能していましたが、数日前に停止し、常に次のエラーが発生しました。

--------------------------- 
Unable to Generate Certificate 
--------------------------- 
Creation of the interception certificate failed. 
makecert.exe returned -1. 
Results from C:\Program Files\Fiddler2\MakeCert.exe -ss my -n 
"CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by 
http://www.fiddler2.com" -eku 1.3.6.1.5.5.7.3.1 -r -cy authority -a 
sha1 
Error: Can't create the key of the subject ('JoeSoft') 
Failed 
------------------------------------------- 

(フィドラーの Google グループからエラーをスワイプしましたが、自分の投稿を投稿したばかりで、すぐに表示されるはずです)。

他の誰かがこの問題を抱えて解決しましたか? Fiddler は壊れているだけですか?

4

12 に答える 12

36

Win7で

  • ここに行きます:C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\
  • すべてのファイル (UUIDS で命名) を選択します。
  • これらのファイルをデスクトップまたはディレクトリ外の他のフォルダーに移動しますAppData
  • Fiddlerを起動し、 Tools|に移動します。Fiddler Options| |Enable HTTPS decryption
  • 今回は動作することを確認してください(うまくいけば)。
  • ファイルを一時的な場所 (つまり、Desktop)
    から元の 場所に戻します。C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\
  • ファイルの 1 つが既存のファイルを置き換えるかどうかを尋ねると、skip.
于 2012-10-12T04:52:11.513 に答える
31

私と他の人はこの問題を抱えていました。これは、Fiddler が (おそらく以前のバージョンの Fiddler から) 作成しようとしているキー ディレクトリと同じ名前で、キー ストアに既に存在するキー ディレクトリです。

私のマシンのキー ディレクトリは次の場所にあります。

C:\Users\\[username]\AppData\Roaming\Microsoft\Crypto\RSA\\[folder-with-big-name]\

競合は実際にはキー フォルダ名であることに注意してください。フォルダーの名前を変更しただけで、キーの生成は正常に機能しました。

詳細については、次のリンクを参照してください: https://groups.google.com/d/msg/httpfiddler/B-Mu6AxgiIc/LY69rWUBshMJ

于 2011-08-03T21:13:30.777 に答える
14

Windows 8 ボックスでも同じ問題が発生しました。@Nicholas-Cloud ごとにキー ファイルを手動で削除しても役に立ちませんでした。それで、いろいろなことを試して、最終的にこれを整理することができました。

証明書の問題を解決するために、次のことを行いました。

  1. [ツール] -> [オプション] -> [HTTPS] タブで、[HTTPS トラフィックを復号化する] オプションのチェックを外しました。これにより、ダイアログの下部にある [傍受証明書の削除] ボタンが有効になりました。
  2. 「傍受証明書の削除」ボタンをクリックしました
  3. すべてのポップアップ メッセージに「はい」と言った
  4. 「復号化...」オプションを有効に戻しました。
  5. Fiddler Windows 8 の構成手順で説明されているように、一連のポップアップ メッセージが続きます。

注: 上記の手順で問題が解決しない場合は、Fiddler を再インストールして手順を繰り返してみてください。HTTPオプションに到達する前に、最初に再インストールしました。

于 2014-01-17T18:54:19.343 に答える
12

fiddler のハードコードされたコマンドは古くなっています。

誰もがフォルダーの削除を停止します。

「Androidで動作するより良い証明書」を生成すると主張するfiddlerプラグインをインストールするだけです。公式のフィドラープラグインリストにあります。

そのプラグインはそれを修正します。

于 2014-10-06T20:07:44.447 に答える
8

Fiddler証明書の生成に失敗した場合、適切な修正は、既存のFiddler2秘密鍵を手動で選択して削除することです。ユーザーの秘密鍵ストアを完全に破棄する上記のPowerShellコードは、非常に悪い考えです。それはすべての個人証明書を役に立たなくします。

Fiddler2が実行するのと同じコマンドを実行して、問題を確認します。

cd "C:\Program Files (x86)\Fiddler2"
makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012

証明書の生成に失敗した場合は、既存の秘密鍵を削除する必要があります。証明書の秘密鍵を見つけるためのツールについては、 http://poshcode.org/3637を参照してください。

それを実行します:

Get-PrivateKeyPath CN=DO_NOT_TRUST_FiddlerRoot

c:\Users\JoeUser\AppData\Roaming\Microsoft\Crypto\RSA\7b90a71bfc56f2582e916a51aed6df9a_f6d54f4e-ff40-450e-9d77-7cfc383b357 そのファイルを削除して、証明書の生成を再試行するなどのメッセージが返されます。成功するはずです。秘密鍵ストア全体を破壊しないでください。

于 2012-09-13T11:23:26.363 に答える
2

ニコラスの答えは正しいです。他の人もこのページを見つけるのを助けるために:

これは、Fiddlerの[Fiddlerルート証明書をデスクトップにエクスポート]ボタンをクリックするか、コードからFiddler.CertMaker.createRootCert()を呼び出すと、「Fiddlerのルート証明書をエクスポートできません」というメッセージが表示される場合に役立ちます。

于 2011-11-18T14:58:57.410 に答える
2

同じエラーが発生しました。これは確かに、以前のバージョンの Fiddler が存在し、それらの間に互換性がないことが原因でした。

上記のフォルダーは、作成した証明書を格納する Fiddler によってのみ使用されます (または、少なくともボックスの個人証明書用であり、Fiddler は確かにそれを使用する唯一のものです)。Fiddler 以外の個人証明書があるかどうかを確認することをお勧めします。IE では、ツール / インターネット オプション / コンテンツ / 証明書 / 個人を使用しています。

フォルダーを完全に空にし、システム ファイルの削除に関するメッセージを恐れないでください。次に、Fiddler で、キャプチャするオプションを再度選択し、HTTPS トラフィックを復号化します。必要に応じて、Fiddler ルート証明書をデスクトップに再エクスポートしてから、IE および FF に再インポートします。必要に応じてブラウザを再起動してお楽しみください。

DO_NOT_TRUST_FIddlerRoot に発行されたプライベート証明書が IE でのみ削除するすべてを削除する代わりに、同じことを行うと思いますが、これはテストしていません。

復号化オプションが不要になったらすぐにオフにすることを忘れないでください。

于 2011-11-22T16:55:14.643 に答える
1

Nicholas Cloud の返信への追加として、そのフォルダーの名前を変更するのに役立つ小さなスクリプトを次に示します。

# Find my SID 
$user = New-Object System.Security.Principal.NTAccount([Environment]::UserName) $mySID = ($user.Translate([System.Security.Principal.SecurityIdentifier])).Value

# Rename keys folder with a timestamp
$timeStamp = Get-Date -format "ddMMyyhhmmss"
$folder = Join-Path -Path $env:USERPROFILE -ChildPath "appData\Roaming\Microsoft\Crypto\RSA\$mySID"
Rename-Item -Force $folder "$folder.$timeStamp"

ニコラスの返信にコメントを追加すると、コードをフォーマットできるようになったので、別の返信を作成することになりました。

于 2012-06-04T04:45:43.157 に答える