Partilhar via


Script do Windows PowerShell para detectar certificados expirados que estão sendo usados pelos serviços do WCF/WF

A configuração para especificar o certificado a ser usado por serviços WCF/WF é similar à seguinte:

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

A configuração é uma sequência de consulta ao repositório de certificados do sistema operacional. Ela não é uma tarefa direta para mapear a consulta da configuração de serviço para o certificado real e para validar informações como a data de validade.

Esse exemplo demonstra como gravar um script do Windows PowerShell que:

  • Executa consultas de certificado baseadas nas informações da configuração de serviço retornadas pelos cmdlets de configuração do AppFabric.

  • Executa uma validação nos certificados consultados e retorna a lista de certificados que expiraram.

Observação

Os exemplos são fornecidos apenas para fins educacionais. Eles não devem ser usados em um ambiente de produção e não foram testados em um ambiente de produção. A Microsoft não oferece suporte técnico para esses exemplos.

Pré-requisitos

Os usuários devem se familiarizar com o script do Windows PowerShell e os cmdlets do AppFabric.

O exemplo tem os seguintes pré-requisitos:

  • que o Windows PowerShell v2 esteja instalado.

  • que uma instalação padrão do AppFabric tenha sido realizada.

Localização do exemplo e arquivos

Os arquivos de exemplo são os seguintes:

  • Readme.mhtml

  • Code\detectExpiredCertificates.ps1

Configurando e executando esse exemplo

  1. O seguinte exemplo mostra como executar o 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    
    

    Observação

    Você pode precisar mudar a diretiva de execução de Restricted para RemoteSigned para que o exemplo funcione. Consulte help Set-ExecutionPolicy para obter mais informações.

    Observação

    Os dois parâmetros especificam o escopo da detecção, em uma combinação de nome de site e caminho virtual. No exemplo abaixo, cada serviço no aplicativo “MyApp” será examinado para verificar se algum certificado está expirado. Esses parâmetros são opcionais; o escopo do servidor será usado se eles não forem especificados. Se nenhum certificado estiver configurado no escopo especificado ou se nenhum certificado estiver expirado, o script não exibirá nenhuma saída.

  2. Você pode usar o provedor de certificado do Windows PowerShell para navegar nos certificados disponíveis nos repositórios de certificado. Isso pode ajudá-lo a configurar seu serviço com um certificado válido. Mais detalhes sobre como usar o provedor de certificado do Windows PowerShell podem ser encontrados em Provedor de Certificado (https://go.microsoft.com/fwlink/?LinkId=194421) (a página pode estar em inglês).

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

Removendo esse exemplo

  1. Feche a sessão do Windows PowerShell. A execução desse exemplo não modifica nenhum recurso no computador.

Demonstra

O script desse exemplo tem três seções:

Inicialização

A primeira parte do script garante que o módulo de cmdlet do AppFabric seja carregado.

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

Script principal

O script principal primeiro recupera a lista de serviços WCF/WF em um determinado escopo chamando o cmdlet Get-ASAppService do AppFabric. Em seguida, ele transporta a lista de serviços para o cmdlet Get-ASAppServiceCertificate para ler a configuração do certificado de serviço. Observe que todas as propriedades $null retornadas pelo cmdlet são substituídas pelos valores padrão reais do tempo de execução.

O script recupera então as informações do certificado do repositório de certificado do sistema operacional baseado nas consultas especificadas na configuração. A API System.Security.Cryptography.X509Certificates de código gerenciado é usada para a consulta.

Finalmente, o script valida as propriedades NotBefore e NotAfter do certificado no horário atual e formata a saída.

Funções do auxiliar

  • ResolveDefaultValue - Resolva valores padrão do tempo de execução para as propriedades de configuração retornadas pelo cmdlet Get-ASAppServiceCertificate.

  • FindCertificates - Consulte os repositórios de certificado usando a API System.Security.Cryptography.X509Certificates.

  2011-12-05