2013-11-25 7 views
6

के साथ प्रमाणपत्र श्रृंखला मान्य करें मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो PowerShell में प्रमाणपत्र श्रृंखला मान्य करता है (कि श्रृंखला में सभी प्रमाणपत्र समाप्त नहीं हुए हैं) और समाप्ति के निकटतम प्रमाणपत्र प्राप्त करता है। मैं जारीकर्ता प्रमाणपत्र खोजने के लिए निम्न स्क्रिप्ट का उपयोग कर रहा हूं:पावरहेल

Get-ChildItem -Recurse -Path Cert: | जहां ऑब्जेक्ट {$ _। विषय -eq $ प्रमाणपत्र.इएसएसयूआर}

कुछ प्रमाणपत्रों के लिए कुछ कारणों से मुझे अलग थंबप्रिंट्स के साथ एक प्रमाणपत्र मिलता है, जिसमें एक ही जारीकर्ता नाम होता है और मुझे उम्मीद है कि केवल एक होना चाहिए।

क्या प्रमाण पत्र की कोई अन्य संपत्ति है जो विशिष्ट रूप से जारीकर्ता प्रमाण पत्र की पहचान करती है? शायद प्रमाण पत्र श्रृंखला को प्रमाणित करने के लिए कुछ और दृष्टिकोण है?

उत्तर

4

चेक आउट टेस्ट प्रमाणपत्र: http://poshcode.org/1633

टेस्ट प्रमाणपत्र श्रृंखला और निरसन

के लिए निर्दिष्ट प्रमाण पत्र एक टेस्ट प्रमाणपत्र cmdlet 4,0
http://technet.microsoft.com/en-us/library/hh848639.aspx

मैं भागा में शामिल नहीं है यह मेरे लोकहोस्ट पर बस इसका परीक्षण कर रहा है,

Get-childitem cert: -recurse | %{ write-host $_ ; Test-Certificate -cert $_ } 

श्रृंखला में एक प्रमाणपत्र समाप्त होने पर यह एक अच्छी त्रुटि देता है।

चेतावनी: चेन की स्थिति: CERT_TRUST_IS_NOT_TIME_VALID टेस्ट प्रमाणपत्र: जब वर्तमान सिस्टम घड़ी या हस्ताक्षरित फ़ाइल में टाइमस्टैम्प के खिलाफ का सत्यापन करते समय आवश्यक प्रमाण पत्र इसकी वैधता अवधि के भीतर नहीं है।

+0

धन्यवाद। X509Chain क्लास का उपयोग करके मैं प्रमाणपत्र श्रृंखला को आसानी से पुनर्प्राप्त करना था। – Ievgen

1

मुझे समाप्ति तिथियों के लिए निजी कुंजी के साथ सभी प्रमाणपत्रों की सूची की आवश्यकता थी। नीचे दिए गए कोड नमूने का परीक्षण पावरहेल 3.0 के तहत किया जाता है। कोशिश/पकड़ संरचना उन चेतावनियों से अप्रिय लाल त्रुटि पाठ के दमन की अनुमति देती है जिनमें निजी कुंजी नहीं है।

Set-Strictmode -Version Latest 
$arrCerts = Get-Childitem CERT:\ -Recurse     
foreach ($objItem in $arrCerts) { 
    Try { $blnFound = ($objItem.HasPrivateKey -eq $True) } 
    Catch { $blnFound = $False }        
    if ($blnFound) {           
     $arrSplit = $objItem.PSParentPath -split "::"   
     write-host 'Path  '$arrSplit[1]     
     write-host 'Subject  '$objItem.SubjectName.Name 
     write-host 'Expires  '$objItem.NotAfter   
     write-host 'Private Key '$objItem.HasPrivateKey  
     write-host 
     } 
    }