Git Product home page Git Product logo

fiddlercert's Introduction

Fiddler Certificate Inspector

A Fiddler extension for examining certificates.

This is an extension for the excellent Fiddler tool, a web debugging tool developed by Eric Lawrence at Telerik. This extension provides an Inspector for HTTPS traffic that allows you to view, export, and install certificates.

With this extension, you can quickly:

  • View the certificate chain.
  • View common properties of the certificate such as the Common Name (CN in subject) and the Subject Alternative Name.
  • Save the certificate to disk.
  • Import the certificate into a certificate store.
  • View the SPKI Fingerprints for HPKP.

Installing

Head on over to the releases section on GitHub and grab the latest release. A pre-built, signed, installer is available for convenience.

Building

Installer

You'll need Visual Studio 2015 or later to open the solution, or the Microsoft Build Tools 2015 to run the build script. You'll also need NSIS installed to build the installer. You will also need the NSIS framework installed to the default location.

To build and create an installer, simply point MSBuild to the build directory of the repository. For example:

msbuild C:\projects\FiddlerCert\build

This will compile the project and package it into an installer.

Signing

If you wish to sign the installer, first you need to make sure you have a valid Authenticode signing certificate.

Then, use the Sign build target with MSBuild:

msbuild /t:Sign C:\projects\FiddlerCert\build

This target will also compile the project. The sign process will automatically select a code signing certificate from the certificate store. The signing process is done twice, once with SHA1 and another with SHA256. This may cause multiple UI prompts if a UI prompt is required.

Manual Installation

If you want to install the project yourself, take the VCSJones.FiddlerCert.dll assembly and place it in the Inspectors and Scripts directory in Documents\Fiddler2 (note this directory is used for both Fiddler2 and Fiddler4).

Requirements

  • Windows Vista / Windows Server 2008 or later is required.
  • Fiddler4 is required.

Affiliation

This is not affiliated with nor endorsed by Eric Lawrence or Telerik.

fiddlercert's People

Contributors

ericlaw1979 avatar vcsjones avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fiddlercert's Issues

Show Certificate Info on CONNECT Tunnel

Seems like the Certificate info should be shown when a Tunnel is selected?

If it can't be for whatever reason (or on a HTTP site) maybe show an explanatory text label?

GetOrder results in breaking Fiddler

Please change this:

https://github.com/vcsjones/FiddlerCert/blob/master/VCSJones.FiddlerCert/CertInspector.cs#L84

...to a saner number (e.g. 10000).

Right now, Fiddler's InspectorComparer implementation attempts to use integer operations (InspectorA.GetOrder() - InspectorB.GetOrder()) to sort the inspectors, and these behave unexpectedly in the face of integer underflow.

https://feedback.telerik.com/fiddler/1384254-response-inspector-sort-order-broken-when-pdfview-inspector-is-installed#

Remove HPKP Info

HPKP is on the way out. We should leave the SPKI tab but remove info about pins. Will indirectly solve #13

ASN.1 Explorer

This would be another tab on each individual certificate. The purpose of this would be to show an ASN.1 tree of the contents of the certificate.

Remove all MessageBoxes.

Message boxes are intrusive and annoying when they occur without the user doing any action.

These should be alerts in the extension itself, either with a bar, label, etc.

  • Remove MessageBox for "HTTPS Interception is required to work"
  • Remove MessageBox for "Your operating system is not supported".

Scaling issue on high DPI displays

When I install FiddlerCert in the latest Fiddler Classic (v5.0.20204.45441 for .NET 4.6.1) on a laptop with Windows 10 Pro 20H2 and high DPI display (4K), it messes up scaling and the whole Fiddler GUI becomes unreadable. I normally use scaling 250% (as recommended by the system) and Fiddler with other extensions is OK with this scaling, except with FiddlerCert. The culprit seems to be the VCSJones.FiddlerCert.dll installed in the subdirectory Inspectors.

Make last update check persistent

Today, the last update check is not persistent. That is, it checks once when the application starts up, and every day thereafter (under normal circumstances) so long as the app is running.

If you are frequently starting and stopping Fiddler, this can cause you to hit GitHub's API limit kinda quick, especially if you are on a shared corporate IP.

We should instead keep the last update check in configuration somewhere so the data survives application restarts.

Add in-context help

FiddlerCert shows some warning indicators, but does not have good explanations as to what they are.

  • The shield - Is used to indicate if there are any certificate errors. It does not display what they are, or indicate why the shield is initially blank (the revocation check happens asynchronously).
  • Why Signature Algorithm is yellow / red (SHA1 / MD5 are bad).
  • What SPKI Fingerprints are.

Copy of PKP Hash

Maybe make the PKP hash label a LinkLabel that has the behavior, when clicked, of copying the appropriate HTTP Header string (including the name and prefix) to the clipboard? Show a message box indicating that this has been done?

Also maybe have messagebox show info on best practices (e.g. must include on cert not in the chain, and should probably use an intermediate's hash not the EE)?

Perf: Disable revocation checking?

The current chain builder is doing online revocation checking by default. Unless that is desired, maybe we should set .NoCheck?

            X509Chain oChain = new X509Chain();
            oChain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
            oChain.Build(oEECert);

Don't require HTTPS Decryption

Currently FiddlerCert only works if HTTPS traffic decryption is enabled. This should not be a requirement as it should still be able to show the certificate chain in CONNECT tunnels.

@ericlaw1979 Is the SessionFlags.IsBlindTunnel the right way to check if a CONNECT tunnel is for an HTTPS connection that doesn't have traffic decryption? My "Should I show certificate" check looks like this right now:

if (oS.isHTTPS || (oS.BitFlags & SessionFlags.IsDecryptingTunnel) == SessionFlags.IsDecryptingTunnel || (oS.BitFlags & SessionFlags.IsBlindTunnel) == SessionFlags.IsBlindTunnel)
{
     //Do fascinating things
}

Add an information dialog

Add a button in the tab header that opens a dialog that tells you about your current FiddlerCert installation.

  • The current version.
  • The latest version, if known (may not be if the user did not enable this).
  • A checkbox to enable or disable checking for updates.

Version checking

Cert Inspector should check for new versions.

  • Use the GitHub JSON API to get the latest version: https://api.github.com/repos/vcsjones/FiddlerCert/releases/latest . The name shall be used to identify the version number, and shall always come in the form "vx.x.x.x". It must have prerelease and draft as false.
  • Do not send anything about the current version in the request. Strip off the UA, cookies, etc.
  • Use a preference setting to disable automatic updates. The default will be "true" and will be changeable via the Quick Exec bar. If false, none of the below applies.
  • Check every 24 hours for a new version, and on start up.
  • When a new version is available, show an action bar at the top of the certificates tab. No modals.
  • The actions on the bar are "Download", "Close", and "Don't show me again". "Download" will open the browser to the html_url in the JSON response.
  • The bar will remain persistent until either an action is taken. In the case of "Download" or "Close", Fiddler Cert will no longer show update notifications for that version. "Don't show again" turns off update checking altogether.
  • Keep a persistent value of the latest version ever run. If a new version is installed, this value should be incremented. If the current version is less than the latest version, assume that this is an intentional downgrade.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.