2010-09-21 17 views
6

Czy jest możliwe użycie niestandardowego głównego urzędu certyfikacji dla FiddlerCore do przechwytywania ruchu HTTPS.Używanie niestandardowego katalogu głównego z FiddlerCore

Potrzebuję przypisania certyfikatu, który będzie używany do podpisywania wszystkich certyfikatów hosta.

Innym rozwiązaniem może być dostarczenie informacji o certyfikacie do FiddlerCore przed utworzeniem certyfikatu głównego.

Odpowiedz

1

FiddlerCore obecnie nie oferuje możliwości dostosowania informacji zawartych w samo podpartym katalogu głównym. Wygeneruje wszystkie certyfikaty encji końcowych powiązane do katalogu głównego o nazwie DO_NOT_TRUST_FiddlerRoot.

Czy możesz wyjaśnić, dlaczego szukasz tej możliwości?

+0

Używamy FiddlerCore do obsługi proxy w komercyjnym narzędziu. Gdy użytkownik uruchomi funkcję proxy, FiddlerCore spróbuje zainstalować wygenerowany przez Fiddlera certyfikat główny i zostanie wyświetlony tekst FiddlerRoot. Celem jest dostosowanie tego tekstu. – dereli

+0

Aby zainstalować root, możesz to zrobić samodzielnie, bez wywoływania metody FiddlerCore, która to robi. Należy jednak zauważyć, że tekst monitu pochodzi z systemu Windows, a nie z Fiddlera. X509Store certStore = new X509Store (StoreName.Root, StoreLocation.CurrentUser); certStore.Open (OpenFlags.ReadWrite); try {certStore.Add (oRootCert); // Może się nie powieść z powodu odrzucenia przez użytkownika prośby o zabezpieczenie systemu Windows: } wreszcie {\t certStore.Close(); } Istnieją inne sposoby instalacji root, ale wymagają one, aby aplikacja działała jako administrator. – EricLaw

+0

Instalowanie certyfikatu głównego jest w porządku, ale problem polega na tym, że FiddlerCore nie będzie używać tego certyfikatu do podpisywania automatycznie generowanych certyfikatów lokacji. – dereli

1
FiddlerApplication.Startup(9999, FiddlerCoreStartupFlags.DecryptSSL); 
var path = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location) + @"\sslcertificate.pfx"; 
var secureEndpoint = FiddlerApplication.CreateProxyEndpoint(443, true, new X509Certificate2(path, "password")); 

Możesz stworzyć swój własny certyfikat przy użyciu narzędzi Visual Studio, jednak użyłem to darmowy program do tworzenia testów jedną przyczynę Jestem leniwy: http://www.xenossoftware.com/freetools/certificategenerator/

Jeśli certyfikat jest zainstalowany na komputerze, Wierzę, że możesz zrobić to samo, używając klasy X509Store.

Oto kod, aby to zrobić (nie testowane):

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

Można użyć oDefaultClientCertificate własność FiddlerApplication określić istniejący certyfikat. Użyłem tego w mojej aplikacji usługi okna przy użyciu FiddlerCoreAPI do przechwytywania ruchu 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); 
+0

'oDefaultClientCertificate' dotyczy certyfikatu klienta; pytanie dotyczy certyfikatu głównego używanego do generowania certyfikatu * serwera *. – EricLaw

Powiązane problemy