PowerShell
लिपियों पर हस्ताक्षर करना
खोज…
टिप्पणियों
स्क्रिप्ट पर हस्ताक्षर करने से आपकी स्क्रिप्ट्स PowerShell में सभी एक्साइटमेंट नीतियों का अनुपालन करेगी और स्क्रिप्ट की अखंडता को सुनिश्चित करेगी। यदि हस्ताक्षर किए जाने के बाद उन्हें संशोधित किया गया है, तो हस्ताक्षरित स्क्रिप्ट चलाने में विफल हो जाएगी।
हस्ताक्षर पर हस्ताक्षर करने के लिए एक कोड हस्ताक्षर प्रमाण पत्र की आवश्यकता होती है। अनुशंसाएँ:
- व्यक्तिगत स्क्रिप्ट / परीक्षण (साझा नहीं): विश्वसनीय प्रमाणित प्राधिकारी (आंतरिक या तृतीय-पक्ष) या स्वयं-हस्ताक्षरित प्रमाण पत्र से प्रमाण पत्र।
- संगठन के अंदर साझा किया गया: विश्वसनीय प्रमाणित प्राधिकारी (आंतरिक या तृतीय-पक्ष) से प्रमाणपत्र
- संगठन के बाहर साझा किया गया: विश्वसनीय तृतीय पक्ष प्रमाणित प्राधिकारी से प्रमाणपत्र
@ TechNet के बारे में अधिक पढ़ें
निष्पादन की नीतियां
PowerShell में कॉन्फ़िगर करने योग्य निष्पादन नीतियां हैं जो किसी स्क्रिप्ट या कॉन्फ़िगरेशन को निष्पादित करने के लिए आवश्यक शर्तों को नियंत्रित करती हैं। एकाधिक स्कोपों के लिए एक अत्यधिक नीति निर्धारित की जा सकती है; कंप्यूटर, वर्तमान उपयोगकर्ता और वर्तमान प्रक्रिया। निष्पादन नीतियों को आसानी से बायपास किया जा सकता है और उपयोगकर्ताओं को प्रतिबंधित करने के लिए डिज़ाइन नहीं किया गया है, बल्कि उन्हें हस्ताक्षरित नीतियों का अनायास उल्लंघन करने से बचाते हैं।
उपलब्ध नीतियां हैं:
स्थापना | विवरण |
---|---|
वर्जित | कोई स्क्रिप्ट की अनुमति नहीं है |
AllSigned | सभी लिपियों पर हस्ताक्षर करने की आवश्यकता है |
RemoteSigned | सभी स्थानीय लिपियों की अनुमति है; केवल दूरस्थ स्क्रिप्ट पर हस्ताक्षर किए |
अप्रतिबंधित | कोई आवश्यकता नहीं। सभी स्क्रिप्ट की अनुमति है, लेकिन इंटरनेट से डाउनलोड की गई स्क्रिप्ट चलाने से पहले चेतावनी देंगे |
उपमार्ग | सभी लिपियों की अनुमति है और कोई चेतावनी प्रदर्शित नहीं की जाती है |
अपरिभाषित | वर्तमान कार्यक्षेत्र के लिए वर्तमान निष्पादन नीति निकालें। मूल नीति का उपयोग करता है। यदि सभी नीतियां अपरिभाषित हैं, तो प्रतिबंधित का उपयोग किया जाएगा। |
आप का उपयोग वर्तमान निष्पादन नीतियों को संशोधित कर सकते हैं Set-ExecutionPolicy
-cmdlet, समूह नीति या -ExecutionPolicy
जब एक शुरू करने पैरामीटर powershell.exe
प्रक्रिया।
के बारे में और अधिक पढ़ें_Execution_Polurities @ TechNet
एक स्क्रिप्ट पर हस्ताक्षर
Set-AuthenticodeSignature
ऑथेंटिकोडसिग्नेचर -cmdlet और कोड-साइनिंग प्रमाणपत्र का उपयोग करके स्क्रिप्ट पर हस्ताक्षर किया जाता है।
#Get the first available personal code-signing certificate for the logged on user
$cert = @(Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)[0]
#Sign script using certificate
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1
आप एक .pfx
-file का उपयोग करके एक प्रमाणपत्र भी पढ़ सकते हैं:
$cert = Get-PfxCertificate -FilePath "C:\MyCodeSigningCert.pfx"
स्क्रिप्ट तब तक मान्य होगी जब तक कि cetificate समाप्त नहीं हो जाता। यदि आप हस्ताक्षर करने के दौरान टाइमस्टैम्प-सर्वर का उपयोग करते हैं, तो प्रमाणपत्र समाप्त होने के बाद स्क्रिप्ट मान्य रहेगी। अधिकांश कंप्यूटरों को स्क्रिप्ट पर हस्ताक्षर करने के लिए उपयोग किए गए प्रमाणित पर भरोसा करने में मदद करने के लिए प्रमाण पत्र (रूट प्राधिकरण सहित) के लिए विश्वास श्रृंखला को जोड़ना भी उपयोगी है।
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1 -IncludeChain All -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"
यह एक विश्वसनीय प्रमाण-पत्र प्रदाता से टाइमस्टैम्प-सर्वर का उपयोग करने की सिफारिश की जाती है, जैसे वेरिसाइन, कोमोडो, थावटे आदि।
सेट-एक्ज़ीक्यूशन पॉलीसी का उपयोग करके निष्पादन नीति को बदलना
डिफ़ॉल्ट क्षेत्र (LocalMachine) के लिए निष्पादन नीति को बदलने के लिए, का उपयोग करें:
Set-ExecutionPolicy AllSigned
एक विशिष्ट दायरे के लिए नीति बदलने के लिए, उपयोग करें:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned
आप -Force
स्विच जोड़कर संकेतों को दबा सकते हैं।
एकल स्क्रिप्ट के लिए निष्पादन नीति को दरकिनार करना
अक्सर आपको एक अहस्ताक्षरित स्क्रिप्ट को निष्पादित करने की आवश्यकता हो सकती है जो वर्तमान निष्पादन नीति का अनुपालन नहीं करती है। ऐसा करने का एक आसान तरीका उस एकल प्रक्रिया के लिए निष्पादन नीति को दरकिनार करना है। उदाहरण:
powershell.exe -ExecutionPolicy Bypass -File C:\MyUnsignedScript.ps1
या आप आशुलिपि का उपयोग कर सकते हैं:
powershell -ep Bypass C:\MyUnsignedScript.ps1
अन्य निष्पादन नीतियां:
नीति | विवरण |
---|---|
AllSigned | केवल एक विश्वसनीय प्रकाशक द्वारा हस्ताक्षरित लिपियों को ही चलाया जा सकता है। |
Bypass | कोई पाबन्दी नहीं; सभी विंडोज पॉवरशेल स्क्रिप्ट को चलाया जा सकता है। |
Default | आम तौर पर RemoteSigned , लेकिन ActiveDirectory के माध्यम से नियंत्रित किया जाता है |
RemoteSigned | डाउनलोड की गई लिपियों को चलने से पहले किसी विश्वसनीय प्रकाशक द्वारा हस्ताक्षरित किया जाना चाहिए। |
Restricted | कोई स्क्रिप्ट नहीं चल सकती। Windows PowerShell का उपयोग केवल इंटरैक्टिव मोड में किया जा सकता है। |
Undefined | NA |
Unrestricted * | bypass समान |
Unrestricted*
कैविएट: यदि आप एक बिना स्क्रिप्ट वाली स्क्रिप्ट चलाते हैं, जिसे इंटरनेट से डाउनलोड किया गया था, तो इसके चलने से पहले आपको अनुमति दी जाती है।
वर्तमान निष्पादन नीति प्राप्त करें
वर्तमान सत्र के लिए प्रभावी निष्पादन नीति प्राप्त करना:
PS> Get-ExecutionPolicy
RemoteSigned
वर्तमान सत्र के लिए सभी प्रभावी निष्पादन नीतियों की सूची बनाएं:
PS> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
निष्पादन नीति को एक विशिष्ट दायरे के लिए सूचीबद्ध करें, पूर्व। प्रक्रिया:
PS> Get-ExecutionPolicy -Scope Process
Undefined
हस्ताक्षरित स्क्रिप्ट से हस्ताक्षर प्राप्त करना
Get Get-AuthenticodeSignature
-cmdlet का उपयोग करके एक हस्ताक्षरित स्क्रिप्ट से प्रमाणिक हस्ताक्षर के बारे में जानकारी प्राप्त करें:
Get-AuthenticodeSignature .\MyScript.ps1 | Format-List *
परीक्षण के लिए एक स्व-हस्ताक्षरित कोड हस्ताक्षर प्रमाण पत्र बनाना
व्यक्तिगत स्क्रिप्ट पर हस्ताक्षर करते समय या परीक्षण कोड पर हस्ताक्षर करते समय यह स्व-हस्ताक्षरित कोड हस्ताक्षर प्रमाणपत्र बनाने के लिए उपयोगी हो सकता है।
PowerShell 5.0 के साथ शुरुआत करके आप New-SelfSignedCertificate
का उपयोग करके एक स्व-हस्ताक्षरित कोड हस्ताक्षर प्रमाणपत्र उत्पन्न कर सकते हैं:
New-SelfSignedCertificate -FriendlyName "StackOverflow Example Code Signing" -CertStoreLocation Cert:\CurrentUser\My -Subject "SO User" -Type CodeSigningCert
पहले के संस्करणों में, आप .NET फ्रेमवर्क एसडीके और विंडोज एसडीके में पाए गए makecert.exe
टूल का उपयोग करके एक स्व-हस्ताक्षरित प्रमाण पत्र बना सकते हैं।
एक स्व-हस्ताक्षरित सेरिटेट केवल उन कंप्यूटरों द्वारा भरोसा किया जाएगा जिन्होंने प्रमाण पत्र स्थापित किया है। साझा की जाने वाली लिपियों के लिए, एक विश्वसनीय प्रमाणपत्र प्राधिकरण (आंतरिक या विश्वसनीय तृतीय-पक्ष) से एक प्रमाण पत्र की सिफारिश की जाती है।