Windows PowerShell-Skript zum Erkennen abgelaufender Zertifikate, die von den WCF/WF-Diensten verwendet werden
Die Konfiguration, mit der das von WCF/WF-Diensten zu verwendende Zertifikat angegeben wird, sieht wie folgt aus:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior">
<serviceCredentials>
<serviceCertificate findValue="86F9D16EAF13CF2E7C1744AD8DB4F04BEF55833B" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Die Konfiguration stellt eine Abfragezeichenfolge für den Zertifikatspeicher des Betriebssystems dar. Das Zuordnen der Abfrage aus der Dienstkonfiguration zum tatsächlichen Zertifikat und das Validieren von Informationen, wie etwa des Ablaufdatums, ist keine geradlinige Aufgabe.
Dieses Beispiel veranschaulicht das Erstellen eines Windows PowerShell-Skripts zu folgenden Zwecken:
Ausführen von Zertifikatabfragen basierend auf den von den AppFabric-Konfigurations-Cmdlets zurückgegebenen Dienstkonfigurationsinformationen.
Führt eine Überprüfung der abgefragten Zertifikate aus und gibt die Liste der abgelaufenen Zertifikate zurück.
Hinweis
Beispiele werden nur zu Anschauungszwecken bereitgestellt. Sie sind nicht für die Verwendung in einer Produktionsumgebung gedacht und wurden nicht in einer Produktionsumgebung getestet. Microsoft bietet keinen technischen Support für diese Beispiele.
Voraussetzungen
Die Benutzer sollten mit der Skripterstellung in Windows PowerShell und mit AppFabric-Cmdlets vertraut sein.
Für das Beispiel gelten die folgenden Voraussetzungen:
Windows PowerShell 2.0 ist installiert.
Eine AppFabric-Standardinstallation wurde ausgeführt.
Beispielspeicherort und -dateien
Das Beispiel umfasst die folgenden Dateien:
Readme.mhtml
Code\detectExpiredCertificates.ps1
Einrichten und Ausführen dieses Beispiels
Das folgende Beispiel zeigt das Ausführen des Skripts:
PS> cd <samples>\Samples\Management\DetectExpiredCertificate\Code PS> .\detectExpiredCertificates.ps1 "Default Web Site" /MyApp Thumbprint Subject NotBefore NotAfter ---------- ------- --------- -------- 2E99C509D371836647EA1A0D4CE4756F21B1CD2C 1/5/2009 12:27:22 AM 1/5/2010 12:27:22 AM
Hinweis
Möglicherweise müssen Sie die Ausführungsrichtlinie aus Restricted in RemoteSigned ändern, damit das Beispiel funktioniert. Weitere Informationen finden Sie durch Eingeben von help Set-ExecutionPolicy.
Hinweis
Die zwei Parameter geben den Umfang der Erkennung – in Form der Kombination aus einem Sitenamen und einem virtuellen Pfad – an. Im vorstehenden Beispiel wird jeder Dienst im Bereich der Webanwendung „MyApp“ auf ein abgelaufenes Zertifikat untersucht. Diese Parameter sind optional; wenn sie nicht angegeben werden, wird der Serverbereich verwendet. Wenn unter dem angegebenen Bereich keine Zertifikate konfiguriert sind oder keine Zertifikate abgelaufen sind, zeigt das Skript keine Ausgabe an.
Sie können den Windows PowerShell-Zertifikatanbieter verwenden, um durch die in den Zertifikatspeichern verfügbaren Zertifikate zu navigieren. Dies kann Sie beim Konfigurieren Ihres Diensts mit einem gültigen Zertifikat unterstützen. Weitere Details zum Verwenden des Windows PowerShell-Zertifikatanbieters finden Sie unter Zertifikatanbieter (https://go.microsoft.com/fwlink/?LinkId=194421).
PS cd cert:\LocalMachine\My PS cert:\LocalMachine\My> dir | select * <results omitted>
Entfernen dieses Beispiels
- Schließen Sie einfach die Windows PowerShell-Sitzung. Durch das Ausführen dieses Beispiels werden keine Ressourcen auf dem Computer verändert.
Veranschaulichung
Das Skript zu diesem Beispiel weist drei Abschnitte auf:
Initialisierung
Im ersten Teil des Skripts wird sichergestellt, dass das AppFabric-Cmdlet-Modul geladen wird.
if ((Get-Command -Module ApplicationServer) -eq $null)
{
Import-Module ApplicationServer
}
Hauptskript
Das Hauptskript ruft zuerst die Liste der WCF/WF-Dienste unter einem bestimmten Bereich ab und ruft zu diesem Zweck das AppFabric-Cmdlet Get-ASAppService auf. Anschließend leitet es die Dienstliste an das Cmdlet Get-ASAppServiceCertificate um, um die Dienstzertifikatkonfiguration zu lesen. Beachten Sie, dass die vom Cmdlet zurückgegebenen „$null“-Eigenschaften durch die tatsächlichen Standardwerte zur Laufzeit ersetzt werden.
Das Skript ruft anschließend die Zertifikatinformationen aus dem Zertifikatspeicher des Betriebssystems basierend auf den in der Konfiguration angegebenen Abfragen ab. Für die Abfrage wird die verwaltete Code-API System.Security.Cryptography.X509Certificates verwendet.
Schließlich überprüft das Zertifikat die Zertifikateigenschaften NotBefore und NotAfter durch Vergleich mit den aktuellen Zeitinformationen und formatiert die Ausgabe.
Hilfsfunktionen
ResolveDefaultValue – Auflösen der Laufzeitstandardwerte für die vom Get-ASAppServiceCertificate-Cmdlet zurückgegebenen Konfigurationseigenschaften.
FindCertificates – Abfragen der Zertifikatspeicher mithilfe des System.Security.Cryptography.X509Certificates-APIs.
2011-12-05