2008-12-02 11 views
37

मुझे एक सुरक्षित डब्ल्यूसीएफ वेब सेवा के लिए इंटरनेट के माध्यम से एक समृद्ध ग्राहक से सुरक्षित संदेश स्तर प्रमाणीकरण प्राप्त करने के लिए x509 प्रमाण पत्र का उपयोग करने की आवश्यकता है।इंटरनेट पर x509 प्रमाणपत्रों का उपयोग करने के लिए मैं डब्ल्यूसीएफ को कैसे कॉन्फ़िगर कर सकता हूं?

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

उत्तर

44

निम्न चरणों को प्राप्त करने के लिए एक गाइड आप शुरू कर रहे हैं:

1) सबसे पहले, आपको अपने क्लाइंट और सर्वर प्रमाण पत्र जेनरेट करने के लिए रूट अथॉरिटी की आवश्यकता है। आप या तो बाहरी प्राधिकरण प्रदाता (उदा। Verisign) का उपयोग कर सकते हैं या आप माइक्रोसॉफ्ट सर्टिफिकेट सर्वर जैसे कुछ का उपयोग कर अपना खुद का उत्पादन कर सकते हैं।

विकास रूट प्राधिकरण प्रमाणपत्र उत्पन्न करने के लिए आप विजुअल स्टूडियो के साथ आने वाले "मेकर्ट" टूल का उपयोग कर सकते हैं, उदा।

makecert -n "CN=MyRootCA" -r -sv RootCA.pvk RootCA.cer 

2) फिर आपको अपने क्लाइंट और सर्वर प्रमाणपत्रों का अनुरोध/उत्पन्न करने की आवश्यकता है। दोनों प्रकार के प्रमाणपत्र स्थानीय मशीन प्रमाण पत्र के रूप में स्थापित किए जा सकते हैं और दोनों को एक ही रूट अथॉरिटी का उपयोग करके हस्ताक्षर करने की आवश्यकता है। आप Microsoft प्रमाणपत्र सर्वर के वेब इंटरफ़ेस से क्लाइंट प्रमाणपत्रों का अनुरोध कर सकते हैं, उदा। http://mycertserver/certsrv

प्रत्येक मशीन के लिए एक विकास क्लाइंट प्रमाणपत्र उत्पन्न करने के लिए आप फिर से "मेकर्ट" का उपयोग कर सकते हैं। ध्यान दें कि क्लाइंट प्रमाण पत्र विकास रूट प्राधिकरण प्रमाणपत्र कदम 1.

makecert -pe -n "CN=MyCert" -ss my -sky exchange -sk MyCert 
     -iv MyRootCA.pvk -ic MyRootCA.cer -sr localmachine MyCert.cer 

में बनाए गए इस स्थानीय मशीन की दुकान में मशीन जिस पर आदेश चला जाता है पर प्रमाण पत्र स्थापित हो जाएगा व्यक्तिगत प्रमाण पत्र फ़ोल्डर में, के साथ प्रवेश किया है।

सर्वर के लिए क्लाइंट प्रमाणपत्रों पर भरोसा करने के लिए आपको सर्वर के विश्वसनीय रूट प्रमाणपत्र प्राधिकरण स्टोर में विकास रूट अथॉरिटी प्रमाणपत्र स्थापित करने की आवश्यकता होगी (ऐसा करने के लिए एमएमसी प्रमाण पत्र स्नैप-इन का उपयोग करें)। ग्राहकों को रूट प्रमाणपत्र भी उसी तरह स्थापित होना चाहिए ताकि वे अपने प्रमाण पत्रों पर भरोसा कर सकें।

3) प्रमाण पत्र (उदा। Web.config के माध्यम से) क्लाइंट प्रमाणीकरण की आवश्यकता के लिए आपको डब्ल्यूसीएफ सेवा कॉन्फ़िगर करें।

<services> 
    <service 
    name="TestService" 
    behaviorConfiguration="wsHttpCertificateBehavior"> 
    <endpoint name="TestEndPoint" 
     address="" 
     binding="wsHttpBinding" 
     bindingConfiguration="wsHttpEndpointBinding" 
     contract="TestService.IMyContract"> 
     <identity> 
     <dns value=""/> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 

<bindings> 
    <wsHttpBinding> 
    <binding name="wsHttpEndpointBinding"> 
     <security mode="Message"> 
     <message clientCredentialType="Certificate"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

<behaviors> 
    <behavior name="wsHttpCertificateBehavior"> 
    <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/> 
    <serviceCredentials> 
     <clientCertificate> 
     <authentication 
      certificateValidationMode="PeerOrChainTrust" 
      revocationMode="NoCheck"/> 
     </clientCertificate> 
     <serverCertificate findValue="CN=MyCert"/> 
    </serviceCredentials> 
    </behavior> 
</behaviors> 

4) अब कॉलर को कॉन्फ़िगर करें (उदा। App.config के माध्यम से)।

<client> 
    <endpoint name="wsHttpBinding" 
    address="https://localhost/TestService/TestService.svc" 
    binding="wsHttpBinding" 
    bindingConfiguration="wsHttpBinding" 
    behaviorConfiguration="wsHttpCertificateBehavior" 
    contract="TestService.IMyContract"> 
    <identity> 
     <dns value="MyCert"/> 
    </identity> 
    </endpoint> 
</client> 

<bindings> 
    <wsHttpBinding> 
    <binding name="wsHttpBinding"> 
     <security mode="Message"> 
     <message clientCredentialType="Certificate"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

<behaviors> 
<endpointBehaviors> 
    <behavior name="wsHttpCertificateBehavior"> 
    <clientCredentials> 
     <clientCertificate findValue="MyCert" storeLocation="LocalMachine"/> 
     <serviceCertificate> 
     <authentication 
      certificateValidationMode="PeerOrChainTrust" 
      revocationMode="NoCheck" 
      trustedStoreLocation="LocalMachine"/> 
     </serviceCertificate> 
    </clientCredentials> 
    </behavior> 
</endpointBehaviors> 
</behaviors> 
+0

उपरोक्त एक्सएमएल गलत है। दुर्भाग्यवश, मेरा संपादन अस्वीकार कर दिया गया था। यदि आपको समस्याएं आ रही हैं, तो ध्यान दें कि '' '' होना चाहिए, और '' तत्व गुम है। यह कम से कम .NET 4.5 के लिए सच है। Http://stackoverflow.com/review/suggested-edits/7584410 देखें – Jimothy

10

मैं साथ ही Microsoft

से WCF सुरक्षा मार्गदर्शन पढ़ने

इस परिदृश्य के साथ इस सौदों की सलाह देते हैं कई अन्य लोगों के

http://www.codeplex.com/WCFSecurityGuide/

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

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