सत्यापित करें मैं स्टोर का उपयोग करने के बजाए प्रोग्रामेटिक रूप से प्रमाण पत्र का उपयोग करने की कोशिश कर रहा हूं। मैं X509Certificate2
फाइलनाम और पासवर्ड के साथ बना रहा हूं।डब्ल्यूसीएफ सर्टिफिकेट चेन, प्रोग्रामेटिक रूप से
यह ठीक काम करता है जब मैंने विश्वसनीय लोगों में प्रमाणपत्र स्टोर में रूट प्रमाणपत्र मैन्युअल रूप से जोड़ा है। हालांकि, मुझे हर तैनाती पर ऐसा करने की ज़रूरत नहीं है - मैं इसके बजाय प्रोग्रामेटिक रूप से भी निपटूंगा।
जब मैं प्रमाणपत्र स्टोर से रूट प्रमाणपत्र को हटाता हूं तो मुझे अपवाद मिलता है।
मैंने जो कुछ भी पढ़ा है, वह कहता है कि मुझे प्रमाणपत्र स्टोर में रूट प्रमाणपत्र मैन्युअल रूप से जोड़ना है, या ट्रस्ट चेन काम नहीं करेगा।
प्रश्न: क्या ट्रस्ट चेन स्थापित करने के लिए कोई प्रोग्रामेटिक तरीका है, इसलिए मुझे इसे मैन्युअल रूप से करने की ज़रूरत नहीं है?
कोड लगता है:
var serverCert = new X509Certificate2("FullPathToMyCertificate.cer", "Password");
Client.ClientCredentials.ServiceCertificate.DefaultCertificate = serverCert;
अपवाद है, जो occures जब मैं ग्राहकों का इस्तेमाल करने की कोशिश, यह है:
System.IdentityModel.Tokens.SecurityTokenValidationException
The X.509 certificate CN=notrealcertname, OU=TPA, OU=BMP, OU=Projects, O=Somebody, C=US is not in the trusted people store.
The X.509 certificate CN=notrealcertname, OU=TPA, OU=BMP, OU=Projects, O=Somebody, C=US chain building failed.
The certificate that was used has a trust chain that cannot be verified.
Replace the certificate or change the certificateValidationMode.
A certificate chain could not be built to a trusted root authority.
त्वरित प्रतिक्रिया, याहिया के लिए बहुत बहुत धन्यवाद। तो, आइए, मान लें कि मैं एक ** CustomCertificateValidator ** को कार्यान्वित करना चाहता हूं जो कि जब मैं ** कस्टम प्रमाणपत्र प्रमाणक ** का उपयोग नहीं करता हूं तो डिफ़ॉल्ट व्यवहार की नकल करता है लेकिन विश्वसनीय लोगों में प्रमाणपत्र स्टोर में मैन्युअल रूप से रूट प्रमाणपत्र जोड़ दिया है। मैं अपने ** कस्टम प्रमाणपत्र प्रमाण पत्र ** में क्या रखूंगा? संभावित रूप से डिफ़ॉल्ट व्यवहार विश्वसनीय सर्वर में रूट प्रमाण के विरुद्ध ** serverCert ** का मूल्यांकन करता है, ठीक है, और क्लाइंट को प्रतिक्रिया प्राप्त करने देता है।यह मूल्यांकन करने के लिए यह क्या करता है? धन्यवाद, स्टीव। – Steve
ग्राहक यहां क्या संदर्भित करता है (क्लाइंट। सेवा प्रमाणपत्र में कहें।), कृपया कृपया? बहुत धन्यवाद। – iTSrAVIE
यह एक नामस्थान नहीं है। यह कोड मानता है कि यह System.ServiceModel.ClientBase <> से व्युत्पन्न कक्षा में निहित है और यह "क्लाइंटबेस" खुलासा करता है, जो कि 'क्लाइंट क्रेडेंशियल्स' संपत्ति कहता है, जिस पर आप कर सकते हैं। 'सेवा प्रमाणपत्र' तब 'प्रमाणीकरण' फिर '। सर्टिफिकेट वैलिडेशन मोड "और इसी तरह। अगर आपको बिल्कुल पता होना चाहिए, तो सेवा प्रमाणपत्र एक कक्षा X509CertificateRecipientClientCredential है – quetzalcoatl