Wenn Sie bereits Fernbefehle mit PowerShell Remoting (PSRemoting) ausführen, wissen Sie, wie praktisch diese Funktion ist. Sie können eine oder mehrere entfernte Computer verbinden und sie so verwalten, als wären sie lokal. PSRemoting basiert auf Windows Remote Management (WinRm), um dies zu ermöglichen, und wenn Sie WinRM nicht über SSL verwenden, könnten Sie einige Sicherheitsprobleme haben.
In diesem praxisorientierten Tutorial erfahren Sie, wie Sie Windows auf dem Client und Server so einrichten, dass WinRM über HTTPS (SSL) verwendet wird, und wie Sie Zertifikate zur Authentifizierung bei der Verwendung von WinRM über HTTPS verwenden.
Voraussetzungen
Wenn Sie diesem Tutorial folgen möchten, stellen Sie sicher, dass Sie Folgendes haben:
- A Windows 7+ or Server 2008 R2 machine to serve as the client machine. This tutorial will use Windows 10.
- A Windows 7+ or Server 2008 R2+ machine to serve as the server machine. This tutorial will use Windows Server 2019.
- Zugriff auf ein lokales Administratorkonto oder ein Konto mit lokalen Administratorrechten auf sowohl dem Client- als auch dem Servercomputer.
- Eine Active Directory Certificate Services (ADCS) Public Key Infrastructure (PKI)-Umgebung. Es wäre hilfreich, wenn Sie ADCS für Produktionsumgebungen implementieren, aber für dieses Tutorial und zum Testen ist es optional. Das Tutorial geht davon aus, dass die PKI als Enterprise- oder eigenständige CA eingerichtet ist.
Warum WinRM über SSL verwenden?
PSRemoting verwendet standardmäßig WinRM und ermöglicht die Remote-Verwaltung von Client-Maschinen. Sobald PSRemoting eine Sitzung über WinRM hergestellt hat, verschlüsselt es alle Kommunikation vom Client zum Server. Auch der Einrichtungsvorgang zur Implementierung von PSRemoting ohne HTTPS ist recht einfach.
Wenn PSRemoting bereits die Sitzungskommunikation verschlüsselt, warum dann den Aufwand betreiben, etwas wie ADCS einzurichten und Zertifikate zu verwalten, wenn es bereits verschlüsselt ist?
Weil während des Authentifizierungsprozesses Anmeldeinformationen in unsicheren Formaten übertragen werden können, abhängig von der verwendeten Authentifizierungsmethode.
Eine der einfachsten Möglichkeiten, PSRemoting sicherer zu machen, besteht darin, WinRM über HTTPS anstelle von HTTP zu verwenden. HTTPS umhüllt Ihren gesamten Verbindungskanal, einschließlich der Authentifizierung, innerhalb der von WinRM bereits verwendeten Verschlüsselungsschicht. HTTPS bietet auch gleichzeitig eine Möglichkeit zur Überprüfung des Servers, mit dem Sie sich verbinden, ob er wirklich derjenige ist, für den Sie ihn halten.
Konfiguration von WinRM mit einem selbstsignierten Zertifikat
Nun kommen wir zu den Demonstrationen. Für den ersten Trick lernen Sie, wie Sie die PSRemoting-Kommunikation mit WinRM über SSL mit einem selbstsignierten Zertifikat verschlüsseln können.
Die Verwendung eines selbstsignierten Zertifikats ist eine großartige Möglichkeit, eine Testumgebung einzurichten, ohne sich um eine PKI wie ADCS kümmern zu müssen. Wenn Sie ein selbstsigniertes Zertifikat verwenden, generieren Sie ein Zertifikat, das vom Server selbst signiert wird und im Grunde für sich selbst bürgt.
Zertifikate dienen in der Regel zwei Aufgaben; Authentifizierung einer Verbindung und Verschlüsselung. Die Verwendung eines selbstsignierten Zertifikats implementiert nur letzteres. Um die Identität eines Servers zu validieren, müssen Sie immer von PKI bereitgestellte Zertifikate verwenden. PKI-bereitgestellte Zertifikate bieten eine einzige Vertrauensquelle im Gegensatz zur manuellen Vertrauenswürdigkeit jedes selbstsignierten Zertifikats.
Die Konfiguration von WinRM über SSL mit einem selbstsignierten Zertifikat erfordert vier Schritte auf oberster Ebene:
- Erstellen des selbstsignierten Zertifikats auf dem Zielcomputer.
- Konfigurieren des WinRM-Webservers (Listener) des Servers zur Verwendung des selbstsignierten Zertifikats für die Authentifizierung.
- Öffnen der entsprechenden Ports in der Windows-Firewall des Zielcomputers.
- Ausführen eines Befehls auf dem Client, um eine Remoteverbindung mithilfe eines PowerShell-Cmdlets wie
Enter-PSSession
zu initiieren.
Lassen Sie uns nun jeden Schritt durchgehen.
Erstellen eines selbstsignierten Zertifikats
Der erste Schritt besteht darin, auf dem Server ein selbstsigniertes Zertifikat zu generieren. Beim Verbinden verwendet PSRemoting dieses Zertifikat, um die gesamte Kommunikation zu verschlüsseln.
Während Sie auf ServerB mit einer geöffneten Windows PowerShell-Konsole als Administrator sind, führen Sie das New-SelfSignedCertificate
-Cmdlet wie unten gezeigt aus. Durch Ausführen des unten stehenden Befehls wird ein Zertifikat für ServerB.domain.com im persönlichen Zertifikatsspeicher der lokalen Maschine generiert.

Der Subject
-Parameter sollte der vollqualifizierte Domänenname des Servers sein. WinRM verwendet den Subject, um die Identität des Servers zu überprüfen.
Selbst wenn der Server in einer Arbeitsgruppe ist, geben Sie immer einen Domänennamen an, z.B. domain.com oder lab.local. Bei der Verbindung mit der Zielmaschine muss der DNS-Name, mit dem Sie sich verbinden, genau mit diesem Subject-Namen übereinstimmen, sonst schlägt die Verbindung fehl.
Die TextExtension
ermöglicht es Ihnen, die Schlüsselverwendung (2.5.29.37
) des Zertifikats zu definieren, die angibt, wofür das Zertifikat verwendet werden darf. Definieren Sie die Schlüsselverwendung für Server-Authentifizierung (1.3.6.1.5.5.7.3.1
), um sicherzustellen, dass das Zertifikat nur zur Authentifizierung der Identität eines Servers verwendet werden kann.
Nachdem
New-SelfSignedCertificate
ausgeführt wurde, gibt es den Thumbabdruck des generierten Zertifikats zurück. Speichern Sie dies, da Sie es für den nächsten Befehl benötigen werden.
Konfigurieren des WinRM-Listeners
Nachdem Sie das selbstsignierte Zertifikat auf dem Server erstellt haben, konfigurieren Sie den WinRm-Listener, um dieses Zertifikat zur Authentifizierung zu verwenden. Verwenden Sie dazu den Befehl winrm create
wie unten gezeigt.
Das Address=*
im folgenden Befehl informiert den Listener, auf allen IP-Adressen zu lauschen, die auf dem Server konfiguriert sind. Wenn der Server mehrere IP-Adressen konfiguriert hat, können Sie hier eine bestimmte IP-Adresse angeben.
Ersetzen Sie den Platzhalter
<Zertifikats-Thumbabdruck hier>
durch den in Schritt 3 zurückgegebenen Thumbabdruck.

Öffnen des WinRM SSL-Firewall-Ports
Wenn Sie die Windows-Firewall verwenden, müssen Sie den eingehenden HTTPS-Verkehr über den Standard-HTTPS-Port 5986
zulassen.
Öffnen Sie den Firewall-Port für WinRM über HTTPS, indem Sie PowerShell verwenden und den folgenden Befehl ausführen.
Verbindung zum Server über SSL herstellen
Sie haben nun den Remote-Windows-Server so konfiguriert, dass er WinRM-Verbindungen über SSL akzeptiert. Gehen Sie jetzt zurück zum Client und initiieren Sie beliebige PSRemoting-Befehle, die Sie testen möchten. Zum Beispiel könnten Sie den Enter-PSSession
– oder Invoke-Command
Cmdlet ausprobieren. Allerdings verbinden Sie sich jetzt etwas anders als mit der Standard-HTTP-Verbindung.
Die Verbindung über HTTPS erfordert in der Regel einen einzelnen Parameter UseSSL
. Dieser Parameter teilt dem Befehl mit, nach einem HTTPS WinRM-Listener anstelle eines HTTP-Listeners zu suchen, wie es standardmäßig der Fall wäre. Der UseSSL
-Parameter ist bei mehreren PSRemoting-Befehlen verfügbar.
Zum Testen führen Sie Enter-PSSession
aus und geben den vollqualifizierten Domänennamen (FQDN) des Servers gemäß dem selbstsignierten Zertifikatsthema, ein PSCredential-Objekt zur Definition von Benutzername und Passwort sowie den UseSSL
-Schalterparameter an.
Wenn Sie den obigen Befehl ausführen, erhalten Sie eine Fehlermeldung, da Sie den WinRM-Listener auf dem Server so konfiguriert haben, dass er ein selbstsigniertes Zertifikat verwendet. Wenn der PSRemoting-Client versucht, sich beim Server zu authentifizieren, wird er versuchen, das Zertifikat zu validieren, was jedoch nicht möglich ist. Ein selbstsigniertes Zertifikat hat keine Vertrauenskette, der der Befehl folgen kann, und schlägt daher fehl.

Um eine Verbindung zum Server mit einem selbstsignierten Zertifikat herzustellen, müssen Sie die Zertifikatstrustüberprüfung außer Kraft setzen. Sie können dies tun, indem Sie eine PSSessionOption mit dem Namen SkipCACheck
erstellen und sie dem Befehl wie unten gezeigt übergeben.
Sie können viele verschiedene PSSessionOption-Objekte definieren, um Optionen für Ihre Remote-Verbindung hinzuzufügen, die nicht direkt im
Enter-PSSession
-Befehl enthalten sind.
Versuchen Sie erneut eine Verbindung herzustellen und PowerShell sollte Sie nun zur Eingabe von Anmeldeinformationen auffordern. Sobald diese bereitgestellt sind, sollten Sie nun eine Verbindung zum Server über WinRM über SSL herstellen können!
Konfigurieren von WinRM mit einem von einer Zertifizierungsstelle (CA) signierten Zertifikat
Wenn Sie beabsichtigen, PSRemoting unter Verwendung von WinRM in der Produktion zu verwenden und so sicher wie möglich zu bleiben, sollten Sie sich auf WinRM über SSL mit einem von einer Zertifizierungsstelle (CA) signierten Zertifikat konzentrieren.
Von einer CA signierte Zertifikate stellen eine Vertrauenskette her und sind sicherer als einfache selbstsignierte Zertifikate, da sie die Identität des Zertifikatsausstellers validieren.
Wenn Sie sich in einer Active Directory-Umgebung befinden, ist eine der häufigsten Möglichkeiten, eine CA einzurichten, die Verwendung von ADCS. Mit ADCS können Sie Zertifikate an Geräte bereitstellen und WinRM so konfigurieren, dass diese Zertifikate verwendet werden.
Dieses Tutorial geht davon aus, dass Sie ADCS bereits in Ihrer Umgebung eingerichtet und funktionstüchtig haben.
Für eine schnelle Einrichtung können Sie der Dokumentation von Microsoft folgen, aber für eine produktive Bereitstellung sollten Sie die Konfiguration gründlich recherchieren, da eine Zertifizierungsstelle im Mittelpunkt der Verschlüsselungsbemühungen einer Organisation steht.
Erstellen des Zertifikatsantrags
Der erste Schritt bei der Verwendung eines von einer Zertifizierungsstelle ausgestellten Zertifikats besteht darin, das Zertifikat zu erstellen. Um das Zertifikat zu erstellen, müssen Sie zunächst einen Zertifikatsantrag mithilfe einer Zertifikatanforderung (CSR) erstellen. Sobald dieser CSR generiert wurde, kann er an die Zertifizierungsstelle gesendet werden, um das Zertifikat auszustellen.
Die Schritte in diesem Abschnitt funktionieren bei ADCS-Bereitstellungen, wenn es sich um eine Unternehmens-CA oder eine eigenständige CA handelt. Wenn Sie eine AD-integrierte Unternehmens-CA verwenden, können Sie die Zertifikate ohne Durchlaufen der Schritte in diesem Abschnitt mithilfe der Zertifikat-Selbstregistrierung oder Zertifikatvorlagen beschleunigt anmelden.
Während Sie sich auf dem Server (ServerB in diesem Tutorial) befinden, erstellen Sie den CSR:
- Öffnen Sie den Windows-Zertifikats-Manager, indem Sie certlm.msc ausführen.
2. Klicken Sie mit der rechten Maustaste auf den Speicher Personal und wählen Sie Alle Aufgaben —> Erweiterte Vorgänge —> Benutzerdefinierten Antrag erstellen.
3. Lassen Sie für dieses Tutorial alle Felder auf den Standardwerten, bis Sie zur Seite Zertifikatsinformationen gelangen. Klicken Sie hier auf das Dropdown-Menü Details und wählen Sie Eigenschaften aus.

4. Klicken Sie auf die Registerkarte Subjekt und ändern Sie den Typ auf Allgemeiner Name.
5. Geben Sie nun den vollqualifizierten Domänennamen des Servers ein, sofern er einer Domäne beigetreten ist, oder nur den Hostnamen, falls dies nicht der Fall ist, und klicken Sie auf Hinzufügen.

Beachten Sie, dass für die Verwendung mit einem WinRM SSL-Listener der allgemeine Name verwendet werden muss. Die anderen Optionen in der Liste können enthalten sein, sind jedoch für diese Bereitstellung nicht erforderlich.
6. Klicken Sie auf die Registerkarte Erweiterung.
7. Wenn Sie keine Zertifikat-basierte Authentifizierung verwenden, die später behandelt wird, erweitern Sie den erweiterten Schlüsselverwendung-Header und fügen Sie Server-Authentifizierung hinzu. Dieser Schlüsselverwendungstyp gibt Windows an, dass das Zertifikat zur Authentifizierung eines Servers verwendet werden sollte. Weitere Optionen sind Client-Authentifizierung, Code-Signierung und Dokumentverschlüsselung.
8. Wenn Sie die zertifikatbasierte Authentifizierung einrichten möchten, stellen Sie sicher, dass Sie Client-Authentifizierung auswählen, wie unten gezeigt.

9. Klicken Sie anschließend auf die Registerkarte Privater Schlüssel und achten Sie auf die Schlüsseloptionen. Ändern Sie die Standard-Schlüsselgröße von 1024 auf mindestens 2048, um die Sicherheit des Schlüsselpaars zu erhöhen.
In Windows stehen auch stärkere kryptografische Anbieter zur Verfügung, jedoch kann es zu Inkompatibilitäten mit älterer Software kommen.
10. Schließen Sie das Fenster Zertifikateigenschaften und speichern Sie Ihre Einstellungen, indem Sie auf OK klicken, und klicken Sie dann auf Weiter, um mit den Anweisungen fortzufahren.
11. Geben Sie nun einen Pfad zum Speichern der Zertifikatsanforderung an, den Sie später abrufen können, und klicken Sie auf Fertig stellen.
Wenn der Vorgang abgeschlossen ist, sollte eine Zertifikatsanforderungsdatei vorliegen.
Zertifikat anfordern
Nachdem Sie die Anforderung erstellt haben, müssen Sie diese nun an Ihre Zertifizierungsstelle (CA) senden, die das Zertifikat erstellt. Gehen Sie dazu wie folgt vor:
- Wechseln Sie zu Ihrem ADCS-Server unter http://<Servername FQDN>/certsrv/certrqxt.asp.

2. Öffnen Sie die zuvor mit dem Notepad erstellte Zertifikatsanforderungsdatei und kopieren Sie den Text aus der Zertifikatsanforderungsdatei in das Anforderungsfeld. Für dieses Zertifikat ist nichts in Zusätzliche Attribute erforderlich.
3. Klicken Sie auf Senden. Dadurch wird Ihre Anforderung an die Zertifizierungsstelle gesendet. Es sollte Ihnen dann die Anforderungs-ID anzeigen, die später erforderlich sein wird. Speichern Sie diese! Sie werden sie später benötigen.
4. Verbinden Sie sich jetzt mit dem CA-Server, der Teil Ihrer ADCS-Umgebung ist, mithilfe des Windows-Zertifikatmanagers auf Ihrem lokalen Computer oder über RDP, indem Sie certsrv.msc ausführen.
5. Klicken Sie auf Ausstehende Anforderungen.

6. Klicken Sie mit der rechten Maustaste auf die ausstehende Anforderung, klicken Sie auf Alle Aufgaben, und klicken Sie auf Ausstellen. Dadurch wird die Anforderung, die Sie gerade basierend auf der Anforderungs-ID aus dem vorherigen Schritt eingereicht haben, genehmigt.
Zertifikat einschreiben
Jetzt, da Sie ein Zertifikat auf der CA ausgestellt haben, ist es an der Zeit, das Zertifikat auf dem Server, auf dem Sie WinRM konfigurieren, einzuschreiben. Dazu:
- Vom Server, auf dem Sie WinRM über SSL einrichten, navigieren Sie zu http://<Servername FQDN>/certckpn.asp. Sie sollten eine einzelne ausstehende Zertifikatsanfrage sehen.

Sie können das öffentliche Zertifikat gegebenenfalls von einer anderen Maschine abrufen, aber der Vorgang wird vereinfacht, wenn Sie vom Server aus starten, auf dem Sie WinRM über HTTPS einrichten.
2. Wählen Sie die Anfrage aus der Liste aus, die Sie eingereicht haben, und laden Sie die Zertifikatskette herunter. Wenn der Server, über den Sie WinRM über HTTPS konfigurieren, Ihren CA-Server als Stammserver verwendet, sollten Sie die gesamte Zertifikatskette herunterladen.

3. Öffnen Sie die Datei der Zertifikatskette. Sie sollten ein Zertifikat für Ihren Server und alle darüber liegenden Zertifizierungsstellen-Zertifikate sehen. Unterhalb von win2.lab.int befindet sich das angeforderte Zertifikat, und WIN2-CA ist das Zertifikat für die CA, die das Zertifikat für win2.lab.int ausgestellt hat.

4. Doppelklicken Sie auf eines der Zertifikate, und klicken Sie in dem sich öffnenden Dialogfeld auf die Schaltfläche Zertifikat installieren. Da dieses Zertifikat vom Server und nicht von einem bestimmten Benutzer verwendet wird, ändern Sie die Option auf Lokaler Computer.

5. Folgen Sie dem Dialogfeld und lassen Sie alles auf den Standardeinstellungen. Die Standardeinstellungen sollten das Zertifikat im Zertifikatsspeicher für vertrauenswürdige Stammzertifizierungsstellen platzieren.
6. Wiederholen Sie nun die Schritte 3-5 für jedes der anderen Zertifikate in der Liste. Wenn Sie mehr als ein Zertifikat haben, stellen Sie sicher, dass alle anderen Zertifikate im Zertifikatsspeicher für Zwischenzertifizierungsstellen platziert werden.
Erstellen und Einrichten des WinRM-HTTPS-Listeners
Jetzt, da alle Zertifikate installiert sind, ist es an der Zeit, WinRM auf Ihrem Server so zu konfigurieren, dass es dieses Zertifikat für den Listener verwendet.
Öffnen Sie PowerShell auf dem WinRM-Server:
- Führen Sie den folgenden Befehl aus, um den WinRm-Listener automatisch einzurichten. Der Befehl
winrm
sucht im lokalen Maschinenzertifikatsspeicher nach einem Zertifikat, das den Anforderungen für WinRM entspricht.
2. Die Windows-Firewall blockiert standardmäßig den WinRM-HTTPS-Port 5986
. Um sicherzustellen, dass die Firewall den eingehenden Port 5986
zulässt, führen Sie den folgenden PowerShell-Befehl aus:
Testen der WinRM-SSL-Verbindung
Zu diesem Zeitpunkt sind Sie bereit, eine Verbindung herzustellen. Verwenden Sie Ihre bevorzugten PSRemoting-Cmdlets wie Invoke-Command
oder Enter-PSSession
, um eine Verbindung zum Server herzustellen und den Parameter UseSSL
zu verwenden.
Stellen Sie immer sicher, dass der Wert für den Parameter
ComputerName
genau mit dem beim Erstellen des Zertifikats angegebenen Common Name übereinstimmt. Wenn Sie versuchen, eine Verbindung zu einem anderen Hostnamen oder möglicherweise zur IP-Adresse des Hosts herzustellen, erhalten Sie einen Zertifikatsfehler, der zu einem Verbindungsfehler führt.
Einrichten der Zertifikatbasierten Authentifizierung
Zu diesem Zeitpunkt sollte bereits ein WinRM-Listener eingerichtet sein, der HTTPS verwendet. In diesem Fall können Sie auch ein Benutzerauthentifizierungszertifikat verwenden, um sich als lokaler Benutzer auf dem Remote-Server zu authentifizieren. Die Verwendung eines Benutzerzertifikats ist eine der sichersten Methoden, erfordert jedoch einige Zeit für die Einrichtung. Sie werden feststellen, dass es auch viel wiederholte Arbeit ist, da jedes Zertifikat einzigartig für die einzelne Client-Maschine ist.
Die zertifikatbasierte Authentifizierung funktioniert nur mit lokalen Benutzerkonten und nicht mit Domänenbenutzern.
Angenommen, Sie haben einen Zertifikatantrag für die Client-Authentifizierung gemäß Abschnitt Erstellen des Zertifikatantrags gestellt, lesen Sie weiter:
Aktivieren der Zertifikatsauthentifizierung und Zuordnen des Benutzers auf dem Server
- Auf dem Server führen Sie den Befehl
Set-Item
aus, um die authentifizierungsbasierte Zertifikatsauthentifizierung zu ermöglichen.
2. Führen Sie anschließend den Befehl Get-ChildItem
aus, um den Speicher für vertrauenswürdige Stammzertifizierungsstellen zu überprüfen und den Daumenabdruck der CA zu finden, der das Zertifikat für die Clientauthentifizierung ausgestellt hat. Filtern Sie dazu die Zertifikate nach dem Subjekt, das den Namen Ihrer CA enthält.
3. Führen Sie den folgenden Befehl aus, wobei SubjectName
das Subjekt des Benutzerzertifikats ist, das Sie beim Erstellen des Zertifikats angegeben haben.
Der CAThumbprint
ist der zuvor gesammelte Daumenabdruck der CA, und anschließend werden Benutzername und Kennwort des lokalen Benutzers abgefragt, die für die authentifizierungsbasierte Zertifikatsauthentifizierung verwendet werden sollen.
Testen der authentifizierungsbasierten Zertifikatsauthentifizierung
Jetzt, da die Zuordnung des Zertifikats zum Benutzer eingerichtet ist, verwenden Sie das Zertifikat auf dem Clientrechner zur Authentifizierung, ohne Anmeldeinformationen anzugeben.
Auf dem Client in PowerShell erhalten Sie den Daumenabdruck des Clientzertifikats, indem Sie im persönlichen Zertifikatsspeicher nachsehen.
Geben Sie nun den Daumenabdruck im Parameter CertificateThumbprint
an einen PSRemoting-Befehl wie unten gezeigt an.
Beachten Sie, dass die zertifikatbasierte Authentifizierung nur mit einem HTTPS-Listener verwendet werden kann. Das Flag
-UseSSL
ist implizit, im Gegensatz zu anderen Authentifizierungsmethoden, bei denen Sie angeben müssen, SSL zu verwenden.
Nächste Schritte
Nachdem Sie gelernt haben, wie Sie WinRM über SSL einrichten, erfahren Sie mehr über PSRemoting in unserem Beitrag PowerShell Remoting: Der ultimative Leitfaden!
Möchten Sie mehr über PowerShell im Allgemeinen erfahren, einschließlich vieler Informationen über PSRemoting? Schauen Sie sich das Buch PowerShell für Sysadmins an!