Partager via


Script Windows PowerShell pour la détection de certificats expirés utilisés par les services WCF/WF

La configuration pour spécifier le certificat que les services WCF/WF doivent utiliser ressemble à ceci :

    <system.serviceModel>
      <behaviors>
        <serviceBehaviors>
          <behavior name="MyBehavior">
            <serviceCredentials>
              <serviceCertificate findValue="86F9D16EAF13CF2E7C1744AD8DB4F04BEF55833B" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
            </serviceCredentials>
          </behavior>
        </serviceBehaviors>
      </behaviors>
    </system.serviceModel>

La configuration est une chaîne de requête adressée au magasin de certificats du système d'exploitation. Le mappage de la requête de la configuration de service vers le certificat réel et la validation d'informations telles que la date d'expiration ne sont pas des tâches simples.

Cet exemple montre comment écrire un script Windows PowerShell qui :

  • Exécute les demandes de certificat basées sur les informations de configuration de service renvoyées par les cmdlets de configuration d'AppFabric.

  • Effectue une validation des certificats demandés et renvoie la liste des certificats qui ont expiré.

Notes

Les exemples sont fournis à titre éducatif uniquement. Ils ne sont pas destinés à être utilisés dans un environnement de production et n'ont pas été testés à cet usage. Microsoft ne fournit aucune assistance technique pour ces exemples.

Conditions préalables

Il est préférable que l'utilisateur soit familiarisé avec les scripts Windows PowerShell et les cmdlets d'AppFabric.

L'exemple nécessite les conditions préalables suivantes :

  • Windows PowerShell v2 est installé

  • L'installation d'AppFabric par défaut a été effectuée.

Emplacement et fichiers de l'exemple

Les exemples de fichiers inclus sont les suivants :

  • Readme.mhtml

  • Code\detectExpiredCertificates.ps1

Configuration et exécution de l'exemple

  1. L'exemple suivant montre comment exécuter le script :

    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    
    

    Notes

    Il se peut que vous deviez modifier la stratégie d'exécution de Restricted en RemoteSigned pour que l'exemple fonctionne. Pour plus d'informations, consultez l'aide Set-ExecutionPolicy.

    Notes

    Les deux paramètres spécifient l'étendue de la détection sous la forme d'une combinaison de nom de site et de chemin d'accès virtuel. Dans l'exemple ci-avant, chaque service sous l'application « MyApp » est examiné pour un certificat expiré. Ces paramètres sont facultatifs ; l'étendue du serveur sera utilisée s'ils ne sont pas spécifiés. Si aucun certificat n'est configuré sous l'étendue spécifiée ou si aucun certificat n'a expiré, le script n'affiche aucun résultat.

  2. Le fournisseur de certificats de Windows PowerShell permet de naviguer parmi les certificats disponibles dans les magasins de certificats. Cela peut vous aider à configurer votre service à l'aide d'un certificat valide. Pour plus d'informations sur l'utilisation du fournisseur de certificats de Windows PowerShell, consultez la rubrique Certificate Provider (https://go.microsoft.com/fwlink/?LinkId=194421).

    PS cd cert:\LocalMachine\My
    PS cert:\LocalMachine\My> dir | select *
    <results omitted>
    

Suppression de l'exemple

  1. Fermez simplement la session Windows PowerShell. L'exécution de cet exemple ne modifie aucune ressource de l'ordinateur.

Démontre

Le script de cet exemple comprend trois sections :

Initialisation

La première partie du script vérifie que le module de cmdlet d'AppFabric est chargé.

if ((Get-Command -Module ApplicationServer) -eq $null)
{
    Import-Module ApplicationServer
}

Script principal

Le script principal commence par extraire la liste des services WCF/WF sous une étendue donnée en appelant la cmdlet Get-ASAppService d'AppFabric. Il canalise ensuite la liste de services vers la cmdlet Get-ASAppServiceCertificate pour lire la configuration du certificat de service. Notez que toutes les propriétés $null renvoyées par la cmdlet sont remplacées par les valeurs par défaut d'exécution réelle.

Le script extrait ensuite les informations de certificat du magasin de certificats du système d'exploitation sur la base des demandes spécifiées dans la configuration. L'API System.Security.Cryptography.X509Certificates de code managé est utilisée pour la requête.

Enfin, le script valide les propriétés NotBefore et NotAfter du certificat par rapport à l'heure actuelle, puis met en forme le résultat.

Fonctions d'assistance

  • ResolveDefaultValue - résoudre des valeurs par défaut d'exécution pour les propriétés de configuration renvoyées par la cmdlet Get-ASAppServiceCertificate.

  • FindCertificates - interroger les magasins de certificats à l'aide de l'API System.Security.Cryptography.X509Certificates.

  2012-03-05