Использование пользовательского рута с FiddlerCore - PullRequest
6 голосов
/ 21 сентября 2010

Можно ли использовать собственный корневой CA для FiddlerCore для перехвата HTTPS-трафика.

Мне нужно назначить сертификат для подписи всех сертификатов хоста.

Другим решением может быть предоставление информации о сертификате в FiddlerCore перед созданием корневого сертификата.

Ответы [ 3 ]

2 голосов
/ 05 апреля 2011
FiddlerApplication.Startup(9999, FiddlerCoreStartupFlags.DecryptSSL);
var path = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location) + @"\sslcertificate.pfx";
var secureEndpoint = FiddlerApplication.CreateProxyEndpoint(443, true, new X509Certificate2(path, "password"));

Вы можете создать свой собственный сертификат с помощью инструментов Visual Studio, однако я использовал эту бесплатную программу для создания теста, потому что мне лень: http://www.xenossoftware.com/freetools/certificategenerator/

Если сертификат установлен на машине, я полагаю, что вы можете сделать то же самое, используя класс X509Store.

Вот код для этого (не тестировался):

FiddlerApplication.Startup(9999, FiddlerCoreStartupFlags.DecryptSSL);
var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
try
{

    store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

    var x509Certificate2 = store.Certificates.Find(X509FindType.FindBySubjectName, "YourSSLCertificateName", true)[0];

    secureEndpoint = FiddlerApplication.CreateProxyEndpoint(443, true, x509Certificate2);

}
finally
{
    store.Close();
}
1 голос
/ 27 сентября 2010

FiddlerCore в настоящее время не предлагает возможность настраивать информацию, содержащуюся в его самозаверяющем корне. Он сгенерирует все сертификаты конечного объекта, связанные с корнем с именем DO_NOT_TRUST_FiddlerRoot.

Не могли бы вы рассказать, почему вы ищете эту возможность?

0 голосов
/ 23 мая 2012

Вы можете использовать свойство oDefaultClientCertificate FiddlerApplication, чтобы указать существующий сертификат.Я использовал это в своем приложении службы окна, используя FiddlerCoreAPI для захвата HTTPS-трафика.

var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
path = path.Replace("file:\\", "");
if (!path.EndsWith(@"\")) path += @"\";
path += "FiddlerRoot.cer";

FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete;
FiddlerApplication.oDefaultClientCertificate = new X509Certificate(path);
FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.DecryptSSL);
...