Script di Windows PowerShell per il rilevamento dei certificati scaduti utilizzati dai servizi WCF/WF

La configurazione che consente di specificare il certificato che verrà utilizzato dai servizi WCF/WF è simile alla seguente:

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

Questa configurazione consiste in una stringa di query inviata all'archivio certificati del sistema operativo. Il mapping della query della configurazione del servizio al certificato effettivo e la convalida di informazioni come la data di scadenza non sono attività semplici.

In questo esempio viene illustrato come scrivere uno script di Windows PowerShell che esegue le seguenti operazioni:

  • Esecuzione di query relative ai certificati in base alle informazioni sulla configurazione del servizio restituite dai cmdlet di configurazione di AppFabric.

  • Convalida dei certificati recuperati dalla query e restituzione dell'elenco di quelli scaduti.

noteNota
Gli esempi vengono forniti solo per scopi didattici. Non sono destinati a essere utilizzati in un ambiente di produzione e non sono stati testati in un ambiente di produzione. Microsoft non fornisce supporto tecnico per questi esempi.

Prerequisiti

Familiarità con lo scripting di Windows PowerShell e i cmdlet di AppFabric.

Di seguito sono riportati i prerequisiti dell'esempio:

  • Installazione di Windows PowerShell v2.

  • Esecuzione di un'installazione predefinita di AppFabric.

Percorso e file di esempio

I file di esempio comprendono quanto segue:

  • Readme.mhtml

  • Code\detectExpiredCertificates.ps1

Installazione ed esecuzione dell'esempio

  1. Nell'esempio riportato di seguito viene illustrato come eseguire lo 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    
    
    
    noteNota
    Affinché l'esempio funzioni, potrebbe essere necessario modificare il criterio di esecuzione da Restricted a RemoteSigned. Per ulteriori informazioni, vedere help Set-ExecutionPolicy.

    noteNota
    I due parametri specificano l'ambito del rilevamento mediante una combinazione formata da nome di sito e percorso virtuale. Nell'esempio sopra riportato verrà esaminato ciascun servizio nell'ambito dell'applicazione “MyApp” per verificare se il certificato è scaduto. Questi parametri sono facoltativi. Se non vengono specificati, verrà utilizzato l'ambito del server. Se nell'ambito specificato non è configurato alcun certificato oppure se nessun certificato è scaduto, non verrà visualizzato alcun output.

  2. È possibile utilizzare il provider Certificate di Windows PowerShell per scorrere i certificati disponibili negli archivi, in modo da configurare un certificato valido per il servizio. Per ulteriori informazioni sull'utilizzo del provider Certificate di Windows PowerShell, vedere Certificate Provider (http://go.microsoft.com/fwlink/?LinkId=194421).

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

Rimozione dell'esempio

  1. È sufficiente chiudere la sessione di Windows PowerShell. L'esecuzione di questo esempio non modifica alcuna risorsa nel computer.

Dimostrazioni

Lo script dell'esempio include tre sezioni:

Inizializzazione

La prima parte dello script garantisce che venga caricato il modulo dei cmdlet di AppFabric.

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

Script principale

Lo script principale recupera innanzitutto l'elenco dei servizi WCF/WF in un determinato ambito mediante una chiamata del cmdlet Get-ASAppService di AppFabric. Invia quindi una pipe con l'elenco dei servizi al cmdlet Get-ASAppServiceCertificate per la lettura della configurazione dei certificati dei servizi. Si noti che le proprietà $null restituite dal cmdlet vengono sostituite con i valori predefiniti effettivi in fase di esecuzione.

Lo script recupera quindi le informazioni sui certificati dall'archivio certificati del sistema operativo in base alle query specificate nella configurazione. Per la query viene utilizzata l'API System.Security.Cryptography.X509Certificates del codice gestito.

Infine, lo script convalida le proprietà NotBefore e NotAfter dei certificati rispetto all'ora corrente e formatta l'output.

Funzioni di supporto

  • ResolveDefaultValue - Consente di risolvere i valori predefiniti in fase di esecuzione per le proprietà di configurazione restituite dal cmdlet Get-ASAppServiceCertificate.

  • FindCertificates - Esegue una query negli archivi certificati utilizzando l'API System.Security.Cryptography.X509Certificates.

  2011-12-05
Mostra: