2017-02-10 9 views
19

मैं एक सी # प्रॉक्सी डीएलएल बनाने की कोशिश कर रहा हूं जो मेरे ऑफ़लाइन वर्कस्टेशन पर VS2015 समुदाय को अनुमति देता है, प्रमाणीकरण के साथ कॉर्पोरेट HTTP प्रॉक्सी के माध्यम से इंटरनेट तक पहुंच प्रदान करता है।सी # विजुअल स्टूडियो 2015: IWebProxy प्रमाणपत्र सत्यापन

this MSDN blog post के निर्देश के बाद मैं इस तरह से HTTP पृष्ठ को VisualStudio कनेक्ट करने में सक्षम हूँ:

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; 
     } 
    } 
} 

लेकिन मैं दृश्य स्टूडियो समुदाय पहुँच के लिए खाता प्रमाणीकरण पृष्ठ पर कनेक्ट करने में सक्षम नहीं हूँ।

तो, मैं DLL का उपयोग कर Microsoft प्रमाण पत्र को सत्यापित करने का प्रयास कर रहा हूं।

क्या मैं किसी भी तरह से HTTPS और प्रमाणपत्र समस्या को पूरा कर सकता हूं?

मैं वेबप्रॉक्सी डीएलएल में प्रमाणपत्र कैसे प्रमाणित कर सकता हूं?

उत्तर

0

आपके पास एक SSL प्रॉक्सी प्रमाणपत्र कंपनी हो सकती है। तुम बस IE में मूल प्रमाणपत्र में एक आयात (यानी 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)

या सिर्फ नेट config के माध्यम से प्रमाण पत्र सत्यापन अनदेखी

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

  2. How to stop certificate errors temporarily with WCF services (OzrenTkalcecKrznaric का जवाब)

विजुअल स्टूडियो 2015 के मामले में, .NET कॉन्फ़िगरेशन फ़ाइल I "% PROGRAMFILES (x86)% \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe.config" पर स्थित है।

मुझे आशा है कि यह सहायक होगा।

0

ServicePointManager.ServerCertificateValidationCallback नेट पर नेटवर्क सर्टिफिकेट सत्यापन के लिए मुख्य पहुंच है यदि आप प्रमाण पत्र को सत्यापित करना चाहते हैं तो आपको इसे यहां करना होगा। मेरा सुझाव है कि आप GetProxy विधि के अंदर कहीं और कॉलबैक को बांधना है। इसे रखें जहां आप प्रॉक्सी शुरू करते हैं और वहां अपना प्रमाणपत्र सत्यापन करते हैं।

0

आप प्रमाण पत्र की जांच पूरी तरह बायपास करना चाहते हैं, तो आप सेट कर सकते हैं अपने ServicePointManager.ServerCertificateValidationCallback हमेशा एक प्रतिनिधि जो सच रिटर्न उपयोग करने के लिए:

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

....

ServicePointManager.ServerCertificateValidationCallback += validationCallback; 

मैं लपेट था कि कोशिश/पकड़/अंत में और अंत में, प्रतिनिधि को हटा दें (क्योंकि यह अन्यथा प्रक्रिया-व्यापी आईआईआरसी लागू करता है):

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

** चेतावनी: ++ सेटिंग वैश्विक होने के बाद से, यह सत्यापन को बंद करते समय भी बहु-थ्रेडेड कॉल पर लागू होगी। विशिष्ट होस्ट चेक को लागू करना या विशिष्ट प्रमाण पत्र थंबप्रिंट स्वीकार करना बेहतर है। बेहतर अभी तक, विंडोज सर्टिफिकेट स्टोर में प्रमाण स्थापित करें ताकि इसे स्वचालित रूप से उठाया जा सके। – jessehouwing

संबंधित मुद्दे