Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
KRÓTKI OPIS
Objaśnienie sposobu podpisywania skryptów w taki sposób, aby były zgodne z zasadami wykonywania programu PowerShell.
DŁUGI OPIS
Zasady ograniczonego wykonywania nie zezwalają na uruchamianie żadnych skryptów. Zasady wykonywania AllSigned i RemoteSigned uniemożliwiają programowi PowerShell uruchamianie skryptów, które nie mają podpisu cyfrowego.
W tym temacie wyjaśniono, jak uruchamiać wybrane skrypty, które nie są podpisane, nawet jeśli zasady wykonywania to RemoteSigned, oraz jak podpisywać skrypty na własny użytek.
Aby uzyskać więcej informacji na temat zasad wykonywania programu PowerShell, zobacz about_Execution_Policies.
ABY ZEZWOLIĆ NA URUCHAMIANIE PODPISANYCH SKRYPTÓW
Po uruchomieniu programu PowerShell na komputerze po raz pierwszy zasady ograniczonego wykonywania (ustawienie domyślne) prawdopodobnie będą obowiązywać.
Zasada Ograniczone nie zezwala na uruchamianie żadnych skryptów.
Aby znaleźć efektywną politykę wykonywania na komputerze, wpisz:
Get-ExecutionPolicy
Aby uruchomić niepodpisane skrypty pisane na komputerze lokalnym i podpisane skrypty od innych użytkowników, uruchom program PowerShell z opcją Uruchom jako administrator, a następnie użyj następującego polecenia, aby zmienić zasady wykonywania na komputerze na RemoteSigned:
Set-ExecutionPolicy RemoteSigned
Aby uzyskać więcej informacji, zobacz temat pomocy dotyczący cmdletu Set-ExecutionPolicy.
URUCHAMIANIE NIEPODPISANYCH SKRYPTÓW (ZASADY WYKONYWANIA REMOTESIGNED)
Jeśli zasada wykonywania programu PowerShell to RemoteSigned, program Windows PowerShell nie będzie uruchamiał niepodpisanych skryptów pobranych z Internetu, w tym niepodpisanych skryptów otrzymywanych za pośrednictwem poczty e-mail i komunikatorów internetowych.
Jeśli spróbujesz uruchomić pobrany skrypt, program PowerShell wyświetli następujący komunikat o błędzie:
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.
Przed uruchomieniem skryptu przejrzyj kod, aby upewnić się, że mu ufasz. Skrypty mają taki sam efekt jak każdy program wykonywalny.
Aby uruchomić niepodpisany skrypt, użyj polecenia cmdlet Unblock-File lub wykonaj poniższą procedurę.
- Zapisz plik skryptu na komputerze.
- Kliknij przycisk Start, kliknij polecenie Mój komputer i znajdź zapisany plik skryptu.
- Kliknij prawym przyciskiem myszy plik skryptu, a następnie kliknij polecenie Właściwości.
- Kliknij Odblokuj.
Jeśli skrypt, który został pobrany z Internetu, jest podpisany cyfrowo, ale nie wybrano jeszcze opcji zaufania jego wydawcy, program PowerShell wyświetla następujący komunikat:
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"):
Jeśli ufasz wydawcy, wybierz opcję "Uruchom raz" lub "Zawsze uruchamiaj". Jeśli nie ufasz wydawcy, wybierz opcję "Nigdy nie uruchamiaj" lub "Nie uruchamiaj". Jeśli wybierzesz opcję "Nigdy nie uruchamiaj" lub "Zawsze uruchamiaj", program PowerShell nie wyświetli monitu o ponowne podanie tego wydawcy.
METODY PODPISYWANIA SKRYPTÓW
Można podpisywać napisane skrypty oraz skrypty uzyskane z innych źródeł. Przed podpisaniem jakiegokolwiek skryptu sprawdź każde polecenie, aby sprawdzić, czy można je bezpiecznie uruchomić.
Aby zapoznać się z najlepszymi rozwiązaniami dotyczącymi podpisywania kodu, zobacz Code-Signing Najlepsze rozwiązania.
Aby uzyskać więcej informacji na temat podpisywania pliku skryptu, zobacz Set-AuthenticodeSignature.
Polecenie New-SelfSignedCertificate cmdlet, wprowadzone w module PKI w programie PowerShell 3.0, tworzy certyfikat z podpisem własnym, który jest odpowiedni do testowania. Aby uzyskać więcej informacji, zobacz temat pomocy dotyczący polecenia cmdlet New-SelfSignedCertificate.
Aby dodać podpis cyfrowy do skryptu, należy go podpisać przy użyciu certyfikatu podpisywania kodu. Dwa typy certyfikatów są odpowiednie do podpisywania pliku skryptu:
Certyfikaty tworzone przez urząd certyfikacji: Za opłatę publiczny urząd certyfikacji weryfikuje Twoją tożsamość i nadaje certyfikat podpisywania kodu. Po zakupie certyfikatu od zaufanego urzędu certyfikacji możesz udostępnić skrypt użytkownikom na innych komputerach z systemem Windows, ponieważ te inne komputery ufają urzędowi certyfikacji.
Utworzone certyfikaty: możesz utworzyć certyfikat z podpisem własnym, dla którego komputer jest urzędem tworzącym certyfikat. Ten certyfikat jest bezpłatny i umożliwia pisanie, podpisywanie i uruchamianie skryptów na komputerze. Jednak skrypt podpisany przez certyfikat z podpisem własnym nie będzie uruchamiany na innych komputerach.
Zazwyczaj certyfikat z podpisem własnym jest używany tylko do podpisywania skryptów pisanych na własny użytek oraz do podpisywania skryptów uzyskanych z innych źródeł, które zostały zweryfikowane jako bezpieczne. Nie jest to odpowiednie dla skryptów, które będą udostępniane, nawet w przedsiębiorstwie.
Jeśli tworzysz certyfikat z podpisem własnym, pamiętaj, aby włączyć silną ochronę klucza prywatnego w certyfikacie. Zapobiega to podpisywaniu skryptów przez złośliwe programy w Twoim imieniu. Instrukcje znajdują się na końcu tego tematu.
TWORZENIE CERTYFIKATU SELF-SIGNED
Aby utworzyć certyfikat z podpisem własnym, użyj polecenia cmdlet New-SelfSignedCertificate w module PKI. Ten moduł został wprowadzony w programie PowerShell 3.0 i jest zawarty w systemach Windows 8 i Windows Server 2012. Aby uzyskać więcej informacji, zobacz temat pomocy dotyczący polecenia cmdlet New-SelfSignedCertificate.
Aby utworzyć certyfikat z podpisem własnym we wcześniejszych wersjach systemu Windows, użyj narzędzia do tworzenia certyfikatu (MakeCert.exe). To narzędzie jest zawarte w zestawie Microsoft .NET Framework SDK (wersje 1.1 i nowsze) oraz w zestawie Microsoft Windows SDK.
Aby uzyskać więcej informacji na temat składni i opisów parametrów narzędzia MakeCert.exe, zobacz Narzędzie do tworzenia certyfikatów (MakeCert.exe).
Aby użyć narzędzia MakeCert.exe do utworzenia certyfikatu, uruchom następujące polecenia w oknie wiersza polecenia zestawu SDK.
Uwaga: Pierwsze polecenie tworzy lokalny urząd certyfikacji dla komputera. Drugie polecenie generuje osobisty certyfikat z urzędu certyfikacji.
Uwaga: Polecenia można kopiować lub wpisywać dokładnie w takiej postaci, w jakiej są wyświetlane. Nie są konieczne podstawianie, chociaż można zmienić nazwę certyfikatu.
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
Narzędzie MakeCert.exe poprosi Cię o podanie hasła klucza prywatnego. Hasło gwarantuje, że nikt nie będzie mógł korzystać z certyfikatu ani uzyskiwać do niego dostępu bez twojej zgody. Utwórz i wprowadź hasło, które możesz zapamiętać. To hasło zostanie później użyte do pobrania certyfikatu.
Aby sprawdzić, czy certyfikat został wygenerowany poprawnie, użyj następującego polecenia, aby pobrać certyfikat z magazynu certyfikatów na komputerze. (Plik certyfikatu nie zostanie znaleziony w katalogu systemu plików).
W wierszu polecenia programu PowerShell wpisz:
Get-ChildItem cert:\CurrentUser\my -codesigning
To polecenie używa dostawcy certyfikatów programu PowerShell do wyświetlania informacji o certyfikacie.
Jeśli certyfikat został utworzony, dane wyjściowe pokazują odcisk palca identyfikujący certyfikat na ekranie podobnym do następującego:
Directory: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
4D4917CB140714BA5B81B96E0B18AAF2C4564FDF CN=PowerShell User ]
PODPISYWANIE SKRYPTU
Po utworzeniu certyfikatu z podpisem własnym możesz podpisać skrypty. Jeśli używasz zasad wykonywania AllSigned, podpisanie skryptu umożliwia uruchomienie skryptu na komputerze.
Poniższy przykładowy skrypt Add-Signature.ps1podpisuje skrypt. Jeśli jednak używasz zasad wykonywania AllSigned, musisz podpisać skrypt Add-Signature.ps1 przed jego uruchomieniem.
Aby użyć tego skryptu, skopiuj następujący tekst do pliku tekstowego i nazwij go 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
Aby podpisać plik skryptu Add-Signature.ps1, wpisz następujące polecenia w wierszu polecenia programu PowerShell:
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature add-signature.ps1 $cert
Po podpisaniu skryptu można go uruchomić na komputerze lokalnym. Skrypt nie będzie jednak uruchamiany na komputerach, na których zasady wykonywania programu PowerShell wymagają podpisu cyfrowego od zaufanego urzędu. Jeśli spróbujesz, program PowerShell wyświetli następujący komunikat o błędzie:
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 <<<<
Jeśli program PowerShell wyświetla ten komunikat po uruchomieniu skryptu, który nie został napisany, potraktuj plik tak, jak w przypadku każdego niepodpisanego skryptu. Przejrzyj kod, aby określić, czy możesz ufać skryptowi.
WŁĄCZANIE SILNEJ OCHRONY KLUCZA PRYWATNEGO DLA CERTYFIKATU
Jeśli masz certyfikat prywatny na komputerze, złośliwe programy mogą być w stanie podpisywać skrypty w Twoim imieniu, co upoważnia program PowerShell do ich uruchamiania.
Aby zapobiec automatycznemu podpisywaniu w Twoim imieniu, użyj Menedżera certyfikatów (Certmgr.exe) w celu wyeksportowania certyfikatu podpisywania do pliku pfx. Menedżer certyfikatów jest zawarty w zestawie Microsoft .NET Framework SDK, zestawie Microsoft Windows SDK oraz w programie Internet Explorer 5.0 i nowszych wersjach.
Aby wyeksportować certyfikat:
- Uruchom Menedżera certyfikatów.
- Wybierz certyfikat wydany przez lokalny główny urząd certyfikacji PowerShell.
- Kliknij przycisk Eksportuj, aby uruchomić Kreatora eksportu certyfikatów.
- Zaznacz opcję "Tak, wyeksportuj klucz prywatny", a następnie kliknij przycisk Dalej.
- Zaznacz opcję "Włącz silną ochronę".
- Wpisz hasło, a następnie wpisz je ponownie, aby potwierdzić.
- Wpisz nazwę pliku z rozszerzeniem .pfx.
- Kliknij przycisk Zakończ.
Aby ponownie zaimportować certyfikat:
- Uruchom Menedżera certyfikatów.
- Kliknij przycisk Importuj, aby uruchomić Kreatora importu certyfikatów.
- Otwórz lokalizację pliku pfx utworzonego podczas procesu eksportowania.
- Na stronie Hasło wybierz opcję "Włącz silną ochronę klucza prywatnego", a następnie wprowadź hasło przypisane podczas procesu eksportowania.
- Wybierz osobisty magazyn certyfikatów.
- Kliknij przycisk Zakończ.
ZAPOBIEGANIE WYGAŚNIĘCIU PODPISU
Podpis cyfrowy w skrypcie jest ważny do momentu wygaśnięcia certyfikatu podpisywania lub do momentu, gdy serwer sygnatur czasowych może zweryfikować, czy skrypt został podpisany w czasie, gdy certyfikat podpisywania był ważny.
Ponieważ większość certyfikatów podpisywania jest ważna tylko przez jeden rok, użycie serwera sygnatury czasowej gwarantuje, że użytkownicy mogą używać skryptu przez wiele lat.
ZOBACZ TEŻ
Set-ExecutionPolicy (Ustaw-Politykę-Wykonania)