Freigeben über


about_Signing

THEMA
    about_signing

KURZBESCHREIBUNG
    Erklärt, wie Skripts signiert werden, damit sie den Windows 
    PowerShell-Ausführungsrichtlinien entsprechen.

DETAILBESCHREIBUNG
    Die Ausführungsrichtlinie "Restricted" lässt keine Ausführung von 
    Skripts zu.
    Die Ausführungsrichtlinien "AllSigned" und "RemoteSigned" 
    verhindern, dass Windows PowerShell Skripts ohne digitale 
    Signatur ausführt.

    In diesem Thema wird erläutert, wie ausgewählte nicht signierte 
    Skripts trotz der Ausführungsrichtlinie "RemoteSigned" ausgeführt 
    werden und wie Sie Skripts für die eigene Verwendung signieren können.
    
    Weitere Informationen über Windows PowerShell-Ausführungsrichtlini
    en finden Sie unter "about_Execution_Policy".


 SO LASSEN SIE DAS AUSFÜHREN SIGNIERTER SKRIPTS ZU
 -------------------------------
    Wenn Sie Windows PowerShell erstmals auf einem Computer starten, 
    ist vermutlich die Ausführungsrichtlinie "Restricted" 
    (Standardeinstellung) gültig.

    Die Richtlinie "Restricted" lässt keine Ausführung von Skripts zu.

    Um die gültige Ausführungsrichtlinie auf dem Computer zu suchen, 
    geben Sie Folgendes ein:

        get-executionpolicy

    Um nicht signierte Skripts, die Sie auf dem lokalen Computer 
    schreiben, und signierte Skripts anderer Benutzer auszuführen, 
    verwenden Sie den folgenden Befehl, um die Ausführungsrichtlinie 
    auf dem Computer in "RemoteSigned" zu ändern: 

    set-executionpolicy remotesigned

    Weitere Informationen finden Sie unter "Set-ExecutionPolicy".  


 AUSFÜHREN NICHT SIGNIERTER SKRIPTS (AUSFÜHRUNGSRICHTLINIE "REMOTESIGNED")
 -------------------------------------------------------- 
    Wenn Sie in Windows PowerShell die Ausführungsrichtli
    nie "RemoteSigned" festgelegt haben, werden keine aus dem Internet 
    heruntergeladenen Skripts ohne Signatur ausgeführt (einschließlich 
    nicht signierter Skripts, die Sie über E-Mail- und Instant 
    Messaging-Programme empfangen).

    Wenn Sie ein heruntergeladenes Skript ausführen möchten, wird 
    folgende Fehlermeldung von Windows PowerShell angezeigt:

        Die Datei <Dateiname> kann nicht geladen werden. Die Datei 
        <Dateiname> ist nicht digital signiert. Das Skript
        wird auf dem System nicht ausgeführt. Weitere Informationen 
        erhalten Sie mit "Get-Help about_signing".

    Überprüfen Sie den Code auf Vertrauenswürdigkeit, bevor Sie das 
    Skript ausführen.
    Skripts haben die gleichen Auswirkungen wie ausführbare Programme.

    So führen Sie ein nicht signiertes Skript aus

        1. Speichern Sie die Skriptdatei auf Ihrem Computer. 
        2. Klicken Sie auf "Start" und anschließend auf "Arbeitsplatz", 
           und suchen Sie die gespeicherte Skriptdatei. 
        3. Klicken Sie mit der rechten Maustaste auf die Skriptdatei, 
           und klicken Sie dann auf "Eigenschaften". 
        4. Klicken Sie auf "Zulassen".

    Wenn Sie ein Skript mit einer digitalen Signatur aus dem Internet 
    heruntergeladen, aber noch nicht angegeben haben, ob Sie dem 
    Herausgeber vertrauen, zeigt Windows PowerShell folgende Meldung an:

        Möchten Sie Software dieses nicht vertrauenswürdigen Herausgebers 
        ausführen? Die Datei <Dateiname> wurde von "CN=<Name des 
        Herausgebers>" veröffentlicht. Dieser Herausgeber gilt auf Ihrem 
        System als nicht vertrauenswürdig. Führen Sie ausschließlich Skripts 
        vertrauenswürdiger Herausgeber aus.

        [E] Nie ausführen [N] Nicht ausführen [M] Einmal ausführen 
        [A] Immer ausführen [?] Hilfe ("N" ist die Standardeinstellung):
    
        Wenn Sie dem Herausgeber vertrauen, wählen Sie "Einmal 
        ausführen" oder "Immer ausführen" aus. Wenn Sie dem 
        Herausgeber nicht vertrauen, wählen Sie entweder "Nie 
        ausführen" oder "Nicht ausführen" aus. Wenn Sie "Nie 
        ausführen" oder "Immer ausführen" auswählen, wird von Windows 
        PowerShell für diesen Herausgeber keine weitere Bestätigung 
        angefordert.
    

 METHODEN ZUR SKRIPTSIGNIERUNG
 --------------------------
    Sie können selbst erstellte Skripts und Skripts, die Sie aus 
    anderen Quellen erhalten, signieren. Überprüfen Sie jeden Befehl 
    im Hinblick auf eine sichere Ausführung, bevor Sie ein Skript 
    signieren.

    Best Practices zu Codesignaturen finden Sie in "Best Practices zu 
    Codesignaturen" unter "https://go.microsoft.com/fwlink/?LinkId=119096"
    (möglicherweise auf Englisch). 

    Weitere Informationen über das Signieren einer Skriptdatei finden 
    Sie unter "Set-AuthenticodeSignature".

    Um ein Skript digital zu signieren, müssen Sie es mit einem 
    Codesignaturzertifikat versehen. Dazu stehen zwei Arten von 
    Zertifikaten zur Verfügung: 

        -- Zertifikate von einer Zertifizierungsstelle:

           Gegen eine Gebühr wird Ihre Identität von einer 
           öffentlichen Zertifizierungsstelle überprüft, und Sie 
           erhalten ein Codesignaturzertifikat. Wenn Sie ein 
           Zertifikat von einer renommierten Zertifizierungsstelle 
           erwerben, können Sie Ihr Skript mit anderen Benutzern 
           gemeinsam verwenden, auf deren Computern Windows 
           ausgeführt wird, da diese der Zertifizierungsstelle vertrauen.

        -- Selbst erstellte Zertifikate:

           Wenn Sie ein Zertifikat mit eigener Signatur erstellen, 
           stellt Ihr Computer die Zertifizierungsstelle dar.
           Dieses Zertifikat ist gebührenfrei und ermöglicht es 
           Ihnen, Skripts auf Ihrem Computer zu schreiben, zu 
           signieren und auszuführen. Ein Skript mit einem selbst 
           signierten Zertifikat wird jedoch auf anderen Computern 
           nicht ausgeführt. 

    In der Regel verwenden Sie ein selbst signiertes Zertifikat nur 
    zum Signieren von Skripts für die eigene Verwendung und von 
    Skripts, die Sie aus anderen Quellen abrufen, deren Sicherheit 
    Sie überprüft haben. Dies ist nicht geeignet für Skripts, die 
    freigegeben werden, auch wenn dies nur innerhalb eines 
    Unternehmens erfolgt.

    Wenn Sie ein Zertifikat mit eigener Signatur erstellen, müssen 
    Sie eine hohe Sicherheit für den privaten Schlüssel des 
    Zertifikats aktivieren. Dadurch wird verhindert, dass Skripts in 
    Ihrem Namen von bösartigen Programmen signiert werden. 
    Anweisungen hierzu erhalten Sie am Ende dieses Themas.


 ERSTELLEN EINES EIGENEN ZERTIFIKATS
 --------------------------------
    Um ein Zertifikat mit eigener Signatur zu erstellen, verwenden Sie das 
    Zertifikaterstellungstool ("MakeCert.exe"). Dieses Tool ist im 
    Microsoft .NET Framework SDK (Version 1.1 und höher) und dem 
    Microsoft Windows SDK enthalten. 

    Weitere Informationen über die Syntax und die Parameterbeschreibun
    gen des Tools "MakeCert.exe" finden Sie in der MSDN (Microsoft 
    Developer Network) Library im Thema "Certificate Creation-Tool 
    (Makecert.exe)" unter "https://go.microsoft.com/fwlink/?LinkId=1190
    97" (möglicherweise auf Englisch).  

    Um mit dem Tool "MakeCert.exe" ein Zertifikat zu erstellen, 
    führen Sie die folgenden Befehle in einem Eingabeaufforderungsfens
    ter des SDK aus. 
 
    Hinweis: Mit dem ersten Befehl wird eine lokale Zertifizierungsste
             lle für den Computer erstellt. Mit dem zweiten Befehl wird ein 
             persönliches Zertifikat von der Zertifizierungsstelle generiert. 

    Hinweis: Sie können die Befehle genau so kopieren oder eingeben, 
             wie sie angezeigt werden.
             Es sind keine Ersetzungen erforderlich, Sie können aber den 
             Zertifikatnamen ändern. 

            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


    Sie werden vom Tool "MakeCert.exe" aufgefordert, ein Kennwort für den 
    privaten Schlüssel einzugeben. Mit dem Kennwort wird sichergestellt, 
    dass ohne Ihre Genehmigung kein anderer Benutzer das Zertifikat 
    verwenden oder darauf zugreifen kann. Erstellen Sie ein Kennwort, das 
    Sie sich leicht merken können, und geben Sie dieses ein. Sie rufen 
    später das Zertifikat mithilfe dieses Kennworts ab.

    Um zu überprüfen, ob das Zertifikat ordnungsgemäß generiert 
    wurde, verwenden Sie den folgenden Befehl, um das Zertifikat im 
    Zertifikatspeicher auf dem Computer abzurufen. (Im Dateisystemverz
    eichnis wird keine Zertifikatsdatei aufgeführt.)

    Geben Sie an der Windows PowerShell-Eingabeaufforderung folgenden 
    Befehl ein:

            get-childitem cert:\CurrentUser\my -codesigning

    Durch diesen Befehl werden mit dem Windows PowerShell-Zertifikatan
    bieter Informationen über das Zertifikat angezeigt.

    Wenn das Zertifikat erstellt wurde, wird in der Ausgabe der 
    Fingerabdruck angezeigt, der das Zertifikat identifiziert. Diese 
    Anzeige sieht etwa folgendermaßen aus:


        Verzeichnis: Microsoft.PowerShell.Security\Zertifikat::CurrentUser\My

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


 SIGNIEREN EINES SKRIPTS
 -----------------------

    Nachdem Sie ein Zertifikat mit eigener Signatur erstellt haben, 
    können Sie Skripts signieren. Wenn Sie die Ausführungsrichtlinie 
    "AllSigned" verwenden, ermöglicht das Signieren eines Skripts die 
    Ausführung desselben auf Ihrem Computer. 

    Mit dem folgenden Beispielskript "Add-Signature.ps1" wird ein 
    Skript signiert. Wenn Sie jedoch die Ausführungsrichtlinie 
    "AllSigned" verwenden, müssen Sie das Skript "Add-Signature.ps1" 
    vor seiner Ausführung signieren.

    Kopieren Sie den folgenden Text in eine Textdatei und benennen 
    Sie diese mit "Add-Signature.ps1", um das Skript zu verwenden.

    Hinweis: Die Skriptdatei darf nicht die Erweiterung ".txt" 
             aufweisen. Wenn der Text-Editor ".txt" anfügt, schließen Sie den 
             Dateinamen in Anführungszeichen ein: "add-signature.ps1".


            ## add-signature.ps1
            ## Signiert eine Datei
            param([string] $file=$(throw "Geben Sie einen Dateinamen an.")) 
            $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0] 
            Set-AuthenticodeSignature $file $cert


    Geben Sie folgende Befehle an der Windows PowerShell-Eingabeauffor
    derung ein, um die Skriptdatei "Add-Signature.ps1" zu signieren: 

        $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0] 

        Set-AuthenticodeSignature add-signature.ps1 $cert


    Nachdem das Skript signiert wurde, können Sie es auf dem lokalen 
    Computer ausführen. Das Skript kann jedoch nicht auf Computern 
    ausgeführt werden, für die die Ausführungsrichtlinie von Windows 
    PowerShell eine digitale Signatur von einem vertrauenswürdigen  
    Herausgeber erfordert. Bei dem Versuch, das Skript auszuführen, 
    wird in diesem Fall die folgende Fehlermeldung von Windows PowerShell 
    angezeigt:

        Die Datei "C:\remote_file.ps1" kann nicht geladen werden. Die 
        Signatur des Zertifikats konnte nicht bestätigt werden.
        Bei Zeile:1 Zeichen:15
        + .\ remote_file.ps1 <<<<

    Wenn diese Meldung von Windows PowerShell bei der Ausführung 
    eines Skripts angezeigt wird, das Sie nicht erstellt haben, 
    behandeln Sie diese Datei wie ein nicht signiertes Skript. 
    Überprüfen Sie den Code, um zu ermitteln, ob das Skript 
    vertrauenswürdig ist.


 HOHE SICHERHEIT DURCH PRIVATEN SCHLÜSSEL FÜR DAS ZERTIFIKAT AKTIVIEREN 
 ----------------------------------------------------------------------

    Wenn Sie auf Ihrem Computer über ein privates Zertifikat 
    verfügen, können bösartige Programme möglicherweise Skripts in 
    Ihrem Namen signieren, die daraufhin von Windows PowerShell 
    ausgeführt werden können. 

    Mit dem Zertifikat-Manager ("Certmgr.exe") können Sie das 
    Signaturzertifikat in eine PFX-Datei exportieren und so das 
    automatische Signieren in Ihrem Namen verhindern. Der 
    Zertifikat-Manager ist im Microsoft .NET Framework SDK, im 
    Microsoft Windows SDK sowie in Internet Explorer 5.0 oder höher 
    enthalten.

    So exportieren Sie das Zertifikat

        1. Starten Sie den Zertifikat-Manager.
    
        2. Wählen Sie das von "PowerShell Local Certificate Root" 
           ausgestellte Zertifikat aus.

        3. Klicken Sie auf "Exportieren", um den Zertifikatexport-Assi
           stenten zu starten.

        4. Wählen Sie "Ja, privaten Schlüssel exportieren" aus, und 
           klicken Sie auf anschließend "Weiter".
    
        5. Wählen Sie "Hohen Schutz aktivieren" aus.

        6. Geben Sie ein Kennwort ein, und bestätigen Sie es durch 
           erneute Eingabe.

        7. Geben Sie einen Dateinamen mit der Dateinamenerweiterung 
           ".pfx" ein.

        8. Klicken Sie auf "Fertig stellen".


    So importieren Sie das Zertifikat erneut

        1. Starten Sie den Zertifikat-Manager.

        2. Klicken Sie auf "Importieren", um den Zertifikatimport-Assi
           stenten zu starten.

        3. Öffnen Sie den Speicherort der PFX-Datei, die Sie während 
           des Exportvorgangs erstellt haben.

        4. Wählen Sie auf der Seite "Kennwort" die Option "Hohe 
           Sicherheit für privaten Schlüssel aktivieren" aus, und geben 
           Sie das Kennwort ein, das Sie beim Export zugewiesen haben.

        5. Wählen Sie den Zertifikatspeicher "Persönlich" aus.

        6. Klicken Sie auf "Fertig stellen".



 VERHINDERN DES ABLAUFENS DER SIGNATUR 
 -----------------------------------
     Die digitale Signatur in einem Skript ist gültig, bis das 
     Signaturzertifikat abläuft oder solange ein Zeitstempelserver 
     überprüfen kann, ob das Skript signiert wurde, während das 
     Signaturzertifikat gültig war. 

     Da die meisten Signaturzertifikate nur ein Jahr gültig sind, 
     wird mit einem Zeitstempelserver sichergestellt, dass die 
     Benutzer Ihr Skript mehrere Jahre verwenden können. 


SIEHE AUCH
    about_Execution_Policies
    about_Profiles
    Get-ExecutionPolicy
    Set-ExecutionPolicy
    Set-AuthenticodeSignature
    "Einführung in das Signieren von Code" ("https://go.microsoft.com/fwlink/?LinkId=106296",
    (möglicherweise auf Englisch)