2012-02-08 21 views
16

मेरे पास संदेश सुरक्षा प्रमाणीकरण के साथ एक डब्ल्यूसीएफ सेवा है।संदेश सुरक्षा के साथ डब्ल्यूसीएफ रूटिंग

मैं लोड संतुलन के लिए एक रूटिंग सेवा सेट अप करना चाहता हूं।

किसी कारण यह काम नहीं करता के लिए, मैं अपवादों को देखने के लिए includeExceptionDetailInFaults सक्रिय कर दिया है, इसलिए ग्राहक में मैं देख रहा हूँ:

क्लाइंट प्रमाणपत्र प्रदान नहीं की है। क्लाइंट प्रमाण पत्र में क्लाइंट प्रमाणपत्र निर्दिष्ट करें।

ऐसा लगता है कि प्रमाण पत्र राउटर-> सेवा से अग्रेषित नहीं किया गया है।

वर्तमान में ग्राहक/राउटर/सेवा एक ही मशीन पर है, इसलिए मेरे पास सभी प्रमाणपत्र हैं, लेकिन यदि मैं उन्हें एक अलग मशीन पर तैनात करता हूं तो राउटर के पास निजी कुंजी होनी चाहिए?

इसके अलावा, अगर मैं राउटर और सेवा (सुरक्षा को ऑफ़लोड) के बीच एक गैर-सुरक्षित कनेक्शन स्थापित करना चाहता हूं, तो मैं कॉलर की पहचान कैसे प्रदान कर सकता हूं?

संपादित करें: सभी क्लाइंट/रूटर (दोनों सर्वर & ग्राहक) के लिए/सर्वर सुरक्षा के लिए कॉन्फ़िगर ही:

  <security mode="Message"> 
       <message clientCredentialType="Certificate" negotiateServiceCredential="false" 
        algorithmSuite="Default" establishSecurityContext="false" /> 
      </security> 
+6

क्या आप 3 कॉन्फ़िगरेशन फाइलें दिखा सकते हैं? –

उत्तर

1

क्लाइंट प्रमाणपत्र प्रदान नहीं की है। क्लाइंट क्रेडेंशियल में क्लाइंट प्रमाणपत्र निर्दिष्ट करें।

मैं इस त्रुटि को देखा है जब सेवा प्रमाण पत्र होस्ट डोमेन नाम से मेल नहीं खाता।

यदि आप अभी भी इस समस्या को देख रहे हैं तो क्या आप अपनी कुछ कॉन्फ़िगरेशन प्रविष्टियां पोस्ट कर सकते हैं?

+0

प्रमाणपत्र होस्ट नाम से मेल नहीं खाता है। मैं अब 'लोकलहोस्ट' या आईपी का उपयोग करता हूं। लेकिन यह अभी भी काम करना चाहिए .. क्या यह एक ज्ञात बग है? – Maxim

+0

आप देख सकते हैं कि [WinHttpCertCfg.exe] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384088 (v = vs.85) .aspx) यह देखने के लिए कि प्रमाणपत्र सही तरीके से सेटअप है या नहीं कुंजी का उपयोग करने के लिए आवश्यक अनुमतियां। –

+0

मुझे नहीं लगता कि इससे मदद मिलेगी, मैं एप्लिकेशन को व्यवस्थापक के रूप में चलाता हूं इसलिए मेरे पास पर्याप्त अनुमतियां होनी चाहिए। – Maxim

0

1) पहली बार ग्राहक द्वारा कोड में प्रमाण पत्र सेट करने का प्रयास करें।

ChannelFactory<IService1> factory = 
      new ChannelFactory<IService1>("Service1_Endpoint"); 
factory.Credentials.ServiceCertificate.SetDefaultCertificate(
      System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, 
      System.Security.Cryptography.X509Certificates.StoreName.My, 
      System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, 
      "<SeriveCerificateName>"); 

यदि आपको वास्तव में प्रमाणपत्र के साथ समस्या है तो आपको एप्लिकेशन स्टार्टअप पर तत्काल अपवाद प्राप्त होगा।

2) यदि कोई अपवाद नहीं है तो दोनों तरफ से सेवा प्रमाण पत्र के अंगूठे की जांच करें।