2017-02-10 32 views
19

Tôi đang cố gắng tạo một C# proxy DLL cho phép Cộng đồng VS2015, trên máy trạm ngoại tuyến của tôi, truy cập internet thông qua proxy HTTP công ty có xác thực.C# Visual Studio 2015: Xác thực chứng chỉ IWebProxy

Tiếp theo hướng dẫn của this MSDN blog post Tôi có thể kết nối VisualStudio vào các trang web HTTP theo cách này:

namespace VSProxy 
{ 
    public class AuthProxyModule : IWebProxy 
    { 
     ICredentials crendential = new NetworkCredential("user", "password"); 

     public ICredentials Credentials 
     { 
      get 
      { 
       return crendential; 
      } 
      set 
      { 
       crendential = value; 
      } 
     } 

     public Uri GetProxy(Uri destination) 
     { 
      ServicePointManager.ServerCertificateValidationCallback = (Header, Cer, Claim, SslPolicyErrors) => true; 
      return new Uri("http://128.16.0.123:1234", UriKind.Absolute); 
     } 

     public bool IsBypassed(Uri host) 
     { 
      return host.IsLoopback; 
     } 
    } 
} 

Nhưng tôi không thể kết nối với các trang xác thực tài khoản cho Visual Studio truy cập Cộng đồng.

Vì vậy, tôi đang cố gắng xác thực chứng chỉ Microsoft bằng cách sử dụng DLL.

Có cách nào để tôi có thể thực hiện vấn đề về HTTPS và chứng chỉ?

Làm cách nào để xác thực chứng chỉ trong webProxy DLL?

Trả lời

0

Bạn có thể có một công ty chứng chỉ proxy SSL đã cung cấp. Bạn chỉ cần nhập một thành chứng chỉ gốc trong IE (tức http://www.instructables.com/id/Installing-an-SSL-Certificate-in-Windows-7/, https://bto.bluecoat.com/webguides/sslv/sslva_first_steps/Content/Topics/Configure/ssl_ie_cert.htm)

Hoặc chỉ cần bỏ qua xác nhận chứng chỉ thông qua Net cấu hình

  1. how to set ServicePointManager.ServerCertificateValidationCallback in web.config

  2. How to stop certificate errors temporarily with WCF services (câu trả lời OzrenTkalcecKrznaric của)

Trong trường hợp của Visual Studio 2015, tệp cấu hình .Net i s nằm ở "% PROGRAMFILES (x86)% \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe.config".

Tôi hy vọng nó hữu ích.

0

ServicePointManager.ServerCertificateValidationCallback Là truy cập chính để xác thực chứng chỉ mạng trên .Net nếu bạn muốn xác thực chứng chỉ bạn phải thực hiện tại đây. Những gì tôi đề nghị bạn là để ràng buộc gọi lại ở một nơi khác hơn là bên trong phương thức GetProxy. Đặt nó nơi bạn khởi tạo proxy và thực hiện xác nhận chứng chỉ của bạn ở đó.

0

Nếu bạn muốn bỏ qua việc kiểm tra giấy chứng nhận hoàn toàn, bạn có thể thiết lập của bạn ServicePointManager.ServerCertificateValidationCallback luôn luôn sử dụng một đại biểu mà trả về true:

var validationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); 

....

ServicePointManager.ServerCertificateValidationCallback += validationCallback; 

tôi muốn quấn rằng trong một thử/bắt/cuối cùng và cuối cùng, loại bỏ các đại biểu (vì nó nếu không áp dụng quá trình iirc toàn bộ):

finally 
{ 
    ServicePointManager.ServerCertificateValidationCallback -= validationCallback; 
} 
+0

** cảnh báo: ++ vì cài đặt là toàn cầu, nó sẽ áp dụng cho các cuộc gọi đa luồng ngay cả khi bạn tắt xác thực. Tốt hơn là nên triển khai kiểm tra máy chủ lưu trữ cụ thể hoặc chấp nhận dấu vân tay chứng chỉ cụ thể. Tốt hơn, hãy cài đặt cert vào cửa sổ chứng chỉ windows để nó được chọn tự động. – jessehouwing

Các vấn đề liên quan