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