2015-12-09 20 views
6

मैं सी # .NET का उपयोग कर रहा हूं और विंडोज प्रमाणपत्र स्टोर में प्रमाणपत्रों का एक समूह स्थापित करने की आवश्यकता है।मैं कैसे जांच सकता हूं कि प्रमाण पत्र स्वयं हस्ताक्षरित है या नहीं?

मुझे यह जांचना होगा कि कौन से प्रमाणपत्र रूट प्रमाणपत्र हैं (यानी स्वयं हस्ताक्षरित), इसलिए मैं उन्हें "विश्वसनीय रूट प्रमाणपत्र" स्टोर में इंस्टॉल कर सकता हूं।

मैं मानक X509Certificate2 कक्षा का उपयोग कर रहा हूं। मेरा वर्तमान विचार यह जांचना है कि Issuer और Subject समान हैं या नहीं।

मैंने देखा है X509Certificate2 है कि Issuer - IssuerName और Subject - SubjectName

Issuer से Subject, या IssuerName से SubjectName की तुलना करना बेहतर है? या यह वास्तव में कोई फर्क नहीं पड़ता?

इसके अलावा, क्या यह एक विश्वसनीय तरीका है या क्या मैं एक और दृष्टिकोण का उपयोग बंद कर दूंगा?

उत्तर

8

यह पोस्ट देखें:, समाधान से टिप्पणी नोटों

विषय और जारीकर्ता एक ही कर रहे हैं, जबकि ऐसा नहीं है सी # java - Find if a certificate is self signed or CA signed

, यह स्व-हस्ताक्षरित है

इसका मतलब है कि आप जिस तरीके से इसे सत्यापित करने का प्रयास कर रहे हैं उसके बारे में सही हैं।

IssuerName और SubjectName वापसी एक DistinguishedName जो RawData शामिल (एक byte[] जारीकर्ता/विषय के लिए कच्चे जानकारी युक्त)। आप इस क्षेत्र की तुलना करना सबसे अच्छा होगा, हालांकि Subject और Issuer की तुलना में मान्य है।

public static bool IsSelfSigned(X509Certificate2 cert) 
{ 
    return cert.SubjectName.RawData.SequenceEqual(cert.IssuerName.RawData); 
} 
:

तो, आप कुछ इस तरह लिख सकते हैं

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

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