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
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.
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
- 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