Az aláírás ismertetéseAbout Signing

Rövid leírásShort description

Ismerteti, hogyan lehet parancsfájlokat aláírni, hogy azok megfeleljenek a PowerShell-végrehajtási házirendeknek.Explains how to sign scripts so that they comply with the PowerShell execution policies.

Hosszú leírásLong description

A korlátozott végrehajtási szabályzat nem engedélyezi a parancsfájlok futtatását.The Restricted execution policy does not permit any scripts to run. A AllSigned és a RemoteSigned végrehajtási szabályzata megakadályozza, hogy a PowerShell olyan parancsfájlokat futtasson, amelyek nem rendelkeznek digitális aláírással.The AllSigned and RemoteSigned execution policies prevent PowerShell from running scripts that do not have a digital signature.

Ez a témakör azt ismerteti, hogyan futtathatók a nem aláírt kiválasztott parancsfájlok, még a végrehajtási házirend RemoteSigned , valamint a parancsfájlok saját használatra történő aláírásának módja.This topic explains how to run selected scripts that are not signed, even while the execution policy is RemoteSigned , and how to sign scripts for your own use.

További információ a PowerShell-végrehajtási házirendekről: about_Execution_Policies.For more information about PowerShell execution policies, see about_Execution_Policies.

Az aláírt parancsfájlok futtatásának engedélyezéseTo permit signed scripts to run

Amikor első alkalommal indítja el a PowerShellt a számítógépen, a korlátozott végrehajtási szabályzat (az alapértelmezett) valószínűleg érvényben lesz.When you start PowerShell on a computer for the first time, the Restricted execution policy (the default) is likely to be in effect.

A korlátozott szabályzat nem engedélyezi a parancsfájlok futtatását.The Restricted policy does not permit any scripts to run.

A számítógépen a hatályos végrehajtási szabályzat megkereséséhez írja be a következőt:To find the effective execution policy on your computer, type:

Get-ExecutionPolicy

Ha olyan aláíratlan parancsfájlokat szeretne futtatni, amelyeket a helyi számítógépen ír, és más felhasználók által aláírt parancsfájlokat szeretne használni, indítsa el a PowerShellt a Futtatás rendszergazdaként beállítással, majd a következő paranccsal módosítsa a végrehajtási házirendet a RemoteSigned :To run unsigned scripts that you write on your local computer and signed scripts from other users, start PowerShell with the Run as Administrator option and then use the following command to change the execution policy on the computer to RemoteSigned :

Set-ExecutionPolicy RemoteSigned

További információ: a Set-ExecutionPolicy parancsmaghoz tartozó súgótémakör.For more information, see the help topic for the Set-ExecutionPolicy cmdlet.

Aláíratlan parancsfájlok futtatása a RemoteSigned végrehajtási házirendjének használatávalRunning unsigned scripts using the RemoteSigned execution policy

Ha a PowerShell végrehajtási szabályzata RemoteSigned , a PowerShell nem futtatja az internetről letöltött aláíratlan parancsfájlokat, beleértve az e-mailek és az azonnali üzenetküldési programok által fogadott aláíratlan parancsfájlokat is.If your PowerShell execution policy is RemoteSigned , PowerShell will not run unsigned scripts that are downloaded from the internet, including unsigned scripts you receive through email and instant messaging programs.

Ha letöltött parancsfájlt próbál futtatni, a PowerShell a következő hibaüzenetet jeleníti meg:If you try to run a downloaded script, PowerShell displays the following error message:

The file <file-name> cannot be loaded. The file <file-name> is not digitally
signed. The script will not execute on the system. Please see "Get-Help
about_Signing" for more details.

A szkript futtatása előtt ellenőrizze, hogy megbízható-e a kód.Before you run the script, review the code to be sure that you trust it. A parancsfájlok ugyanazzal a hatállyal rendelkeznek, mint bármely végrehajtható program.Scripts have the same effect as any executable program.

Aláíratlan parancsfájl futtatásához használja a Unblock-File parancsmagot, vagy használja az alábbi eljárást.To run an unsigned script, use the Unblock-File cmdlet or use the following procedure.

  1. Mentse a parancsfájlt a számítógépre.Save the script file on your computer.
  2. Kattintson a Start gombra, majd a Sajátgép elemre, és keresse meg a mentett parancsfájlt.Click Start, click My Computer, and locate the saved script file.
  3. Kattintson a jobb gombbal a parancsfájlra, majd kattintson a Tulajdonságok elemre.Right-click the script file, and then click Properties.
  4. Kattintson a Tiltás feloldása elemre.Click Unblock.

Ha az internetről letöltött parancsfájl digitálisan alá van írva, de még nem választotta a közzétevő megbízhatóságát, a PowerShell a következő üzenetet jeleníti meg:If a script that was downloaded from the internet is digitally signed, but you have not yet chosen to trust its publisher, PowerShell displays the following message:

Do you want to run software from this untrusted publisher?
The file <file-name> is published by CN=<publisher-name>. This
publisher 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"):

Ha megbízik a közzétevőben, válassza a "Futtatás egyszer" vagy a "mindig Futtatás" lehetőséget.If you trust the publisher, select "Run once" or "Always run." Ha nem bízik meg a közzétevőben, válassza a "Soha ne fusson" vagy a "ne fusson" lehetőséget.If you do not trust the publisher, select either "Never run" or "Do not run." Ha a "soha nem fut" vagy a "mindig fut" lehetőséget választja, a PowerShell nem kéri újra a közzétevőt.If you select "Never run" or "Always run," PowerShell will not prompt you again for this publisher.

Parancsfájlok aláírásának módszereiMethods of signing scripts

Aláírhatja az Ön által írt parancsfájlokat és a más forrásokból beszerzett parancsfájlokat.You can sign the scripts that you write and the scripts that you obtain from other sources. A parancsfájlok aláírása előtt vizsgálja meg az egyes parancsokat, és ellenőrizze, hogy biztonságos-e a Futtatás.Before you sign any script, examine each command to verify that it is safe to run.

A kódok aláírásával kapcsolatos ajánlott eljárásokért tekintse meg a kód aláírása – ajánlott eljárásokcímű témakört.For best practices about code signing, see Code-Signing Best Practices.

További információ a parancsfájlok aláírásáról: set-AuthenticodeSignature.For more information about how to sign a script file, see Set-AuthenticodeSignature.

A New-SelfSignedCertificate PowerShell 3,0 PKI-moduljában bemutatott parancsmag létrehoz egy önaláírt tanúsítványt, amely megfelelő a teszteléshez.The New-SelfSignedCertificate cmdlet, introduced in the PKI module in PowerShell 3.0, creates a self-signed certificate that is Appropriate for testing. További információkért tekintse meg a New-SelfSignedCertificate parancsmag Súgó témakörét.For more information, see the help topic for the New-SelfSignedCertificate cmdlet.

Ha digitális aláírást szeretne hozzáadni egy parancsfájlhoz, alá kell írnia egy kód aláíró tanúsítványát.To add a digital signature to a script, you must sign it with a code signing certificate. A következő két típusú tanúsítvány alkalmas a parancsfájl aláírására:Two types of certificates are suitable for signing a script file:

  • A hitelesítésszolgáltató által létrehozott tanúsítványok: díj ellenében a nyilvános hitelesítésszolgáltatók igazolják az identitását, és egy kód-aláíró tanúsítványt biztosítanak.Certificates that are created by a certification authority: For a fee, a public certification authority verifies your identity and gives you a code signing certificate. Ha megbízható hitelesítésszolgáltatótól vásárolja meg a tanúsítványt, megoszthatja a parancsfájlt a Windows rendszert futtató más számítógépeken lévő felhasználókkal, mert azok a többi számítógép megbízhatónak minősítik a hitelesítésszolgáltatót.When you purchase your certificate from a reputable certification authority, you are able to share your script with users on other computers that are running Windows because those other computers trust the certification authority.

  • Létrehozott tanúsítványok: létrehozhat egy önaláírt tanúsítványt, amelynek a számítógépe a tanúsítványt létrehozó hatóság.Certificates that you create: You can create a self-signed certificate for which your computer is the authority that creates the certificate. Ez a tanúsítvány díjmentes, és lehetővé teszi parancsfájlok írását, aláírását és futtatását a számítógépen.This certificate is free of charge and enables you to write, sign, and run scripts on your computer. Egy önaláírt tanúsítvánnyal aláírt parancsfájl azonban nem fog futni más számítógépeken.However, a script signed by a self-signed certificate will not run on other computers.

Az önaláírt tanúsítványokat általában csak a saját használatra írt szkriptek aláírására, valamint a más forrásból származó, a biztonságos hitelesítéshez használt parancsfájlok aláírására érdemes használni.Typically, you would use a self-signed certificate only to sign scripts that you write for your own use and to sign scripts that you get from other sources that you have verified to be safe. Nem megfelelő olyan parancsfájlok esetén, amelyeket a rendszer még a vállalaton belül is meg fog osztani.It is not appropriate for scripts that will be shared, even within an enterprise.

Ha önaláírt tanúsítványt hoz létre, ügyeljen arra, hogy erős titkos kulcsot engedélyezzen a tanúsítványon.If you create a self-signed certificate, be sure to enable strong private key protection on your certificate. Ez megakadályozza, hogy a rosszindulatú programok aláírják a parancsfájlokat az Ön nevében.This prevents malicious programs from signing scripts on your behalf. Az utasítások a témakör végén találhatók.The instructions are included at the end of this topic.

Önaláírt tanúsítvány létrehozásaCreate a self-signed certificate

Ha önaláírt tanúsítványt szeretne létrehozni, használja a New-SelfSignedCertificate parancsmagot a PKI modulban.To create a self-signed certificate in use the New-SelfSignedCertificate cmdlet in the PKI module. Ez a modul a PowerShell 3,0-ben lett bevezetve, és a Windows 8 és a Windows Server 2012 részét képezi.This module is introduced in PowerShell 3.0 and is included in Windows 8 and Windows Server 2012. További információ: a New-SelfSignedCertificate parancsmaghoz tartozó súgótémakör.For more information, see the help topic for the New-SelfSignedCertificate cmdlet.

Ha önaláírt tanúsítványt szeretne létrehozni a Windows korábbi verzióiban, használja a tanúsítvány-létrehozási eszközt MakeCert.exe .To create a self-signed certificate in earlier versions of Windows, use the Certificate Creation tool MakeCert.exe. Ez az eszköz a Microsoft .NET SDK (1,1-es és újabb verziók) és a Microsoft Windows SDK része.This tool is included in the Microsoft .NET SDK (versions 1.1 and later) and in the Microsoft Windows SDK.

A MakeCert.exe eszköz szintaxisáról és paraméter-leírásáról további információt a tanúsítvány-létrehozási eszköz (MakeCert.exe)című témakörben talál.For more information about the syntax and the parameter descriptions of the MakeCert.exe tool, see Certificate Creation Tool (MakeCert.exe).

Ha a MakeCert.exe eszköz használatával szeretne tanúsítványt létrehozni, futtassa a következő parancsokat egy SDK-parancssorablakban.To use the MakeCert.exe tool to create a certificate, run the following commands in an SDK Command Prompt window.

Megjegyzés: az első parancs létrehoz egy helyi hitelesítésszolgáltatót a számítógéphez.Note: The first command creates a local certification authority for your computer. A második parancs személyes tanúsítványt hoz létre a hitelesítésszolgáltatótól.The second command generates a personal certificate from the certification authority.

Megjegyzés: a parancsokat pontosan úgy másolhatja vagy írhatja be, ahogy azok megjelennek.Note: You can copy or type the commands exactly as they appear. Nem szükségesek helyettesítések, de a tanúsítvány nevét is módosíthatja.No substitutions are necessary, although you can change the certificate name.

makecert -n "CN=PowerShell Local Certificate Root" -a sha1 `
-eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer `
-ss Root -sr localMachine

makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 `
-eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer

A MakeCert.exe eszköz egy titkos kulcs jelszavának megadását kéri.The MakeCert.exe tool will prompt you for a private key password. A jelszó biztosítja, hogy senki sem használhatja a tanúsítványt, és nem fér hozzá a tanúsítványhoz.The password ensures that no one can use or access the certificate without your consent. Hozzon létre és adjon meg egy jelszót, amelyet meg tud jegyezni.Create and enter a password that you can remember. Ezt a jelszót később fogja használni a tanúsítvány lekéréséhez.You will use this password later to retrieve the certificate.

A tanúsítvány megfelelő generálásának ellenőrzéséhez használja a következő parancsot a tanúsítvány beszerzéséhez a számítógép tanúsítványtárolójában.To verify that the certificate was generated correctly, use the following command to get the certificate in the certificate store on the computer. Nem talál tanúsítványfájl a fájlrendszer könyvtárában.You will not find a certificate file in the file system directory.

A PowerShell parancssorába írja be a következőt:At the PowerShell prompt, type:

Get-ChildItem cert:\CurrentUser\my -codesigning

Ez a parancs a PowerShell-szolgáltató használatával tekinti meg a tanúsítványra vonatkozó információkat.This command uses the PowerShell Certificate provider to view information about the certificate.

Ha a tanúsítvány létrejött, a kimenetben látható a tanúsítvány azonosítására szolgáló ujjlenyomat , amely a következőhöz hasonló:If the certificate was created, the output shows the thumbprint that identifies the certificate in a display that resembles the following:

Directory: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                                Subject
----------                                -------
4D4917CB140714BA5B81B96E0B18AAF2C4564FDF  CN=PowerShell User ]

Parancsfájl aláírásaSign a script

Miután létrehozta az önaláírt tanúsítványt, aláírhatja a parancsfájlokat.After you create a self-signed certificate, you can sign scripts. Ha a AllSigned végrehajtási szabályzatát használja, a parancsfájlok aláírása lehetővé teszi a parancsfájl futtatását a számítógépen.If you use the AllSigned execution policy, signing a script permits you to run the script on your computer.

A következő minta-parancsfájl Add-Signature.ps1 aláír egy parancsfájlt.The following sample script, Add-Signature.ps1, signs a script. Ha azonban a AllSigned végrehajtási szabályzatát használja, akkor a futtatása előtt alá kell írnia a Add-Signature.ps1 parancsfájlt.However, if you are using the AllSigned execution policy, you must sign the Add-Signature.ps1 script before you run it.

Fontos

A szkriptet ASCII vagy UTF8NoBOM kódolás használatával kell menteni. Egy másik kódolást használó parancsfájlt is aláírhat.The script must be saved using ASCII or UTF8NoBOM encoding.You can sign a script file that uses a different encoding. A parancsfájl futtatása sikertelen, vagy a parancsfájlt tartalmazó modul nem importálható.But the script fails to run or the module containing the script fails to import.

A szkript használatához másolja az alábbi szöveget egy szövegfájlba, és nevezze el Add-Signature.ps1 .To use this script, copy the following text into a text file, and name it Add-Signature.ps1.

## Signs a file
param([string] $file=$(throw "Please specify a filename."))
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature $file $cert

A parancsfájl aláírásához Add-Signature.ps1 írja be a következő parancsokat a PowerShell parancssorába:To sign the Add-Signature.ps1 script file, type the following commands at the PowerShell command prompt:

$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature add-signature.ps1 $cert

A szkript aláírása után futtathatja azt a helyi számítógépen.After the script is signed, you can run it on the local computer. A parancsfájl azonban nem fut olyan számítógépeken, amelyeken a PowerShell végrehajtási házirendje egy megbízható hitelesítésszolgáltatótól származó digitális aláírást igényel.However, the script will not run on computers on which the PowerShell execution policy requires a digital signature from a trusted authority. Ha megpróbálja, a PowerShell a következő hibaüzenetet jeleníti meg:If you try, PowerShell displays the following error message:

The file C:\remote_file.ps1 cannot be loaded. The signature of the
certificate cannot be verified.
At line:1 char:15
+ .\ remote_file.ps1 <<<<

Ha a PowerShell akkor jeleníti meg ezt az üzenetet, amikor nem írt parancsfájlt futtat, akkor a fájlt úgy kezelje, mintha az aláíratlan parancsfájlt kellene kezelnie.If PowerShell displays this message when you run a script that you did not write, treat the file as you would treat any unsigned script. Tekintse át a kódot annak megállapításához, hogy megbízható-e a parancsfájl.Review the code to determine whether you can trust the script.

Erős titkos kulcsú védelem engedélyezése a tanúsítványhozEnable strong private key protection for your certificate

Ha van saját tanúsítványa a számítógépen, előfordulhat, hogy a kártékony programok aláírják a parancsfájlokat az Ön nevében, amely engedélyezi a PowerShell számára a futtatását.If you have a private certificate on your computer, malicious programs might be able to sign scripts on your behalf, which authorizes PowerShell to run them.

Ha meg szeretné akadályozni az automatikus bejelentkezést az Ön nevében, a Tanúsítványkezelő használatával Certmgr.exe exportálja az aláíró tanúsítványt egy .pfx fájlba.To prevent automated signing on your behalf, use Certificate Manager Certmgr.exe to export your signing certificate to a .pfx file. A Tanúsítványkezelőt a Microsoft .NET SDK, a Microsoft Windows SDK és az Internet Explorer tartalmazza.Certificate Manager is included in the Microsoft .NET SDK, the Microsoft Windows SDK, and in internet Explorer.

A tanúsítvány exportálása:To export the certificate:

  1. Indítsa el a Tanúsítványkezelőt.Start Certificate Manager.
  2. Válassza ki a PowerShell helyi tanúsítványának gyökerében kiállított tanúsítványt.Select the certificate issued by PowerShell Local Certificate Root.
  3. A tanúsítvány exportálása varázsló elindításához kattintson az Exportálás gombra.Click Export to start the Certificate Export Wizard.
  4. Válassza az igen, a titkos kulcs exportálása lehetőséget, majd kattintson a Tovább gombra.Select "Yes, export the private key", and then click Next.
  5. Válassza az "erős védelem engedélyezése" lehetőséget.Select "Enable strong protection."
  6. Írjon be egy jelszót, majd írja be újra a megerősítéshez.Type a password, and then type it again to confirm.
  7. Adjon meg egy fájlnevet, amely a. pfx kiterjesztésű.Type a file name that has the .pfx file name extension.
  8. Kattintson a Finish (Befejezés) gombra.Click Finish.

A tanúsítvány újbóli importálása:To re-import the certificate:

  1. Indítsa el a Tanúsítványkezelőt.Start Certificate Manager.
  2. A tanúsítvány importálása varázsló elindításához kattintson az importálás elemre.Click Import to start the Certificate Import Wizard.
  3. Nyissa meg az exportálási folyamat során létrehozott. pfx fájl helyét.Open to the location of the .pfx file that you created during the export process.
  4. A jelszó lapon válassza az "erős titkos kulcsú védelem engedélyezése" lehetőséget, majd adja meg az exportálási folyamat során hozzárendelt jelszót.On the Password page, select "Enable strong private key protection", and then enter the password that you assigned during the export process.
  5. Válassza ki a személyes tanúsítványtárolót.Select the Personal certificate store.
  6. Kattintson a Finish (Befejezés) gombra.Click Finish.

Az aláírás lejáratának megakadályozásaPrevent the signature from expiring

A parancsfájlban lévő digitális aláírás érvényes, amíg az aláíró tanúsítvány le nem jár, vagy amíg egy időbélyeg-kiszolgáló ellenőrizni tudja, hogy a parancsfájl aláírása megtörtént-e, miközben az aláíró tanúsítvány érvényes volt.The digital signature in a script is valid until the signing certificate expires or as long as a timestamp server can verify that the script was signed while the signing certificate was valid.

Mivel a legtöbb aláíró tanúsítvány csak egy évig érvényes, egy időbélyegző-kiszolgáló használatával biztosíthatja, hogy a felhasználók több évig is használhatják a parancsfájlt.Because most signing certificates are valid for one year only, using a time stamp server ensures that users can use your script for many years to come.

Lásd mégSee also

about_Execution_Policiesabout_Execution_Policies

about_Profilesabout_Profiles

Get-ExecutionPolicyGet-ExecutionPolicy

Set-ExecutionPolicySet-ExecutionPolicy

Set-AuthenticodeSignatureSet-AuthenticodeSignature

A kód aláírásának bemutatásaIntroduction to Code Signing