2012-01-11 36 views
5
में

मैं Windows 7 उपयोग कर रहा हूँ एक प्रमाण पत्र पर भरोसा है, और Powershell से हस्ताक्षर किए स्क्रिप्ट को चलाने के लिए, Powershell के security-settings"all-signed" की तैयारी में हैं, और मेरे स्क्रिप्ट एक valid certificate मेरी कंपनी से साथ साइन इन किया है चाहता हूँ। मैंने अपने स्थानीय प्रमाणपत्र स्टोर (right-clicked the pfx-file and installed) पर .pfx-file भी जोड़ा है।कैसे Windows PowerShell

हालांकि, जब मैं एक हस्ताक्षरित स्क्रिप्ट शुरू, मैं एक संदेश मिलेगा जिसमें बताया:

"Do you want to run software from this untrusted publisher? 
File Z:\Powershell Signed Scripts\signed.ps1 is published by CN=[MyCompanyName] and is not trusted on your system. Only run scripts from 
trusted publishers. 
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help 
(default is "D"):" 

के बाद से मैं स्वतः अपने सिस्टम पर ये स्क्रिप्ट कॉल करना चाहते हैं, मैं भरोसा करने के लिए अपने आयातित प्रमाण पत्र जोड़ना चाहते हैं मेरे सिस्टम पर सूची, ताकि जब मैं पहली बार एक हस्ताक्षरित स्क्रिप्ट चलाता हूं तो मुझे अब कोई संदेश नहीं मिलता है। मैं अपना प्रमाणपत्र एक भरोसेमंद कैसे बना सकता हूं?

+0

क्या आप सुनिश्चित हैं कि प्रमाणीकरण प्राधिकरण का सार्वजनिक प्रमाण पत्र जो आपके डेवलपर प्रमाणपत्र में आपके डेवलपर प्रमाणपत्र को छोड़ देता है? – JPBlanc

उत्तर

2

लगता है जैसे आपको यह सत्यापित करने की आवश्यकता है कि स्क्रिप्ट सही तरीके से हस्ताक्षरित है और आपके पास सही प्रमाणपत्र स्टोर में सही प्रमाणपत्र स्थापित है।

हस्ताक्षरित स्क्रिप्ट के बारे में जानकारी प्राप्त करने के लिए Get-AuthenticodeSignature cmdlet का उपयोग करें।

प्रमाण पत्र पर हस्ताक्षर करने के लिए Scott's guide की भी समीक्षा करें।

+2

प्रमाण पत्र विशेष रूप से विश्वसनीय प्रकाशक कंटेनर –

6

दरअसल विंडोज PowerShell में एक प्रमाण पत्र पर भरोसा कैसे, आप किसी भी एमएमसी :)

पहले, उदाहरण के लिए नामित अपने व्यक्तिगत प्रमाणपत्र के स्थान की जाँच "पावर" के बिना ऐसा कर सकते हैं :

Get-ChildItem -Recurse cert:\CurrentUser\ |where {$_ -Match "Power"} | Select PSParentPath,Subject,Issuer,HasPrivateKey |ft -AutoSize 

(यह एक खाली होना चाहिए :)

gci cert:\CurrentUser\TrustedPublisher 

अपने प्रमाण पत्र के लिए पथ के साथ आदेश बिल्ड:

$cert = Get-ChildItem Certificate::CurrentUser\My\ABLALAH 

अगला काम certificate store पर (यहाँ मैं दो प्रमाणपत्र संग्रह पर काम: कंप्यूटर उपयोगकर्ता &)

$store = New-Object 
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store "TrustedPublisher","LocalMachine" 
$store.Open("ReadWrite") 
$store.Add($cert) 
$store.Close() 

चेक, आप अपना प्रमाण पत्र ढूंढना चाहिए:

+0

में रखा जाना चाहिए प्रमाण पत्र को संग्रहीत करने के लिए अपने उदाहरण में, आप 'विश्वसनीय ट्रस्टिशर", "लोकलमाचिन" का उपयोग कर रहे हैं, जो केवल प्रशासक निजीकरण के साथ सुलभ है। अगली पंक्तियों में आप 'CurrentUser \ TrustedPublisher' का जिक्र कर रहे हैं जो उपयोगकर्ताओं द्वारा सुलभ है। इस प्रकार मैं ''स्थानीयमाचिन' 'को' 'मौजूदा यूज़र' 'में बदलने का सुझाव दूंगा ताकि यह एक पूर्ण कार्य उदाहरण बन जाए। –