2010-09-21 11 views
6

Có thể sử dụng CA gốc tùy chỉnh cho FiddlerCore để chặn lưu lượng HTTPS hay không.Sử dụng gốc tùy chỉnh với FiddlerCore

Điều tôi cần là chỉ định chứng chỉ được sử dụng để ký tất cả chứng chỉ máy chủ lưu trữ.

Một giải pháp khác có thể cung cấp thông tin chứng chỉ cho FiddlerCore trước khi tạo chứng chỉ gốc.

Trả lời

1

FiddlerCore hiện không cung cấp khả năng tùy chỉnh thông tin có trong thư mục gốc tự ký của nó. Nó sẽ tạo ra tất cả các chứng chỉ thực thể cuối được xích vào gốc có tên DO_NOT_TRUST_FiddlerRoot.

Bạn có thể giải thích lý do bạn tìm kiếm khả năng này không?

+0

Chúng tôi đang sử dụng FiddlerCore để cung cấp hỗ trợ proxy trên một công cụ thương mại. Khi người dùng bắt đầu tính năng proxy, FiddlerCore cố gắng cài đặt chứng chỉ gốc được tạo Fiddler và văn bản FiddlerRoot được hiển thị. Mục đích là tùy chỉnh văn bản này. – dereli

+0

Để thực sự cài đặt thư mục gốc, bạn có thể tự làm như vậy mà không cần gọi phương thức FiddlerCore để thực hiện điều đó. Tuy nhiên, lưu ý rằng văn bản của lời nhắc là từ Windows, không phải Fiddler. X509Store certStore = new X509Store (StoreName.Root, StoreLocation.CurrentUser); certStore.Open (OpenFlags.ReadWrite); thử {certStore.Add (oRootCert); // Có thể không thành công do người dùng từ chối lời nhắc bảo mật của Windows } cuối cùng {\t certStore.Close(); } Có nhiều cách khác để cài đặt thư mục gốc, nhưng chúng yêu cầu ứng dụng của bạn đang chạy với tư cách quản trị viên. – EricLaw

+0

Có thể cài đặt chứng chỉ gốc nhưng vấn đề là FiddlerCore sẽ không sử dụng chứng chỉ đó để ký chứng chỉ mỗi trang được tạo tự động. – 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")); 

Bạn có thể tạo giấy chứng nhận của riêng bạn sử dụng công cụ Visual Studio, tuy nhiên, tôi sử dụng chương trình miễn phí này để tạo ra một thử nghiệm một nguyên nhân tôi lười biếng: http://www.xenossoftware.com/freetools/certificategenerator/

Nếu giấy chứng nhận đã được cài đặt trên máy tính này, Tôi tin rằng bạn cũng có thể làm điều tương tự bằng cách sử dụng lớp X509Store.

Dưới đây là một số mã để làm điều này (không kiểm tra):

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

Bạn có thể sử dụng tài sản oDefaultClientCertificate của FiddlerApplication để xác định giấy chứng nhận hiện có. Tôi đã sử dụng tính năng này trên ứng dụng dịch vụ cửa sổ của mình bằng cách sử dụng FiddlerCoreAPI để thu được lưu lượng 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' liên quan đến chứng chỉ ứng dụng khách được sử dụng; câu hỏi là về chứng chỉ gốc được sử dụng để tạo chứng chỉ * máy chủ *. – EricLaw