Compartir vía


Script de Windows PowerShell para detectar los certificados expirados que usan los servicios WCF/WF

La configuración para especificar el certificado que usarán los servicios de WCF o WF es similar a la siguiente:

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

La configuración es una cadena de consulta para el almacén de certificados del sistema operativo. No es una tarea directa para asignar la consulta de la configuración del servicio al certificado actual y validar información como la fecha de expiración.

En este ejemplo se muestra el procedimiento para crear un script de Windows PowerShell que:

  • Ejecuta consultas de certificados a partir de la información de configuración del servicio que devuelven los cmdlet de configuración de AppFabric.

  • Lleva a cabo la validación de los certificados consultados y devuelve la lista de certificados expirados.

Nota

Los ejemplos se proporcionan únicamente con fines de aprendizaje. No están concebidos para su uso en un entorno de producción ni se han probado en este tipo de entorno. Microsoft no proporciona asistencia técnica para estos ejemplos.

Requisitos previos

Los usuarios deben estar familiarizados con el lenguaje de scripting de Windows PowerShell y los cmdlets de AppFabric.

Es necesario cumplir los siguientes requisitos previos del ejemplo:

  • Windows PowerShell v2 está instalado.

  • Se realizó la instalación predeterminada de AppFabric.

Ubicación y archivos de ejemplo

Entre los archivos de ejemplo se incluyen los siguientes:

  • Readme.mhtml

  • Code\detectExpiredCertificates.ps1

Configuración y ejecución de este ejemplo

  1. En el ejemplo siguiente se muestra el procedimiento para ejecutar el 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    
    

    Nota

    Es posible que sea necesario cambiar la directiva de ejecución de Restricted a RemoteSigned para que funcione el ejemplo. Para obtener más información, vea help Set-ExecutionPolicy.

    Nota

    Ambos parámetros especifican el ámbito de la detección en una combinación de nombre de sitio y ruta de acceso virtual. En el ejemplo anterior, cada servicio de la aplicación "MyApp" se examinará para detectar la existencia de certificados expirados. Estos parámetros son opcionales; se usará el ámbito de servidor si no se especifican. Si el ámbito especificado no cuenta con certificados configurados o si no hay certificados expirados, el script no mostrará resultados.

  2. Puede usar el proveedor de certificados de Windows PowerShell para navegar a través de los certificados disponibles de los almacenes de certificados. Esto puede resultarle útil para configurar el servicio con un certificado válido. Para obtener información detallada sobre el uso del proveedor de certificados de Windows PowerShell, vea Proveedor de certificados (https://go.microsoft.com/fwlink/?LinkId=194421).

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

Eliminación de este ejemplo

  1. Sólo tiene que cerrar la sesión de Windows PowerShell. La ejecución de este ejemplo no modifica los recursos del equipo.

Demuestra

El script de este ejemplo contiene tres secciones:

Inicialización

La primera parte del script garantiza que se cargue el módulo de cmdlets de AppFabric.

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

Script principal

El script principal primero recupera la lista de servicios de WCF o WF en un determinado ámbito al llamar al cmdlet de AppFabric Get-ASAppService. Seguidamente, canaliza la lista de servicios hacia el cmdlet Get-ASAppServiceCertificate para leer la configuración del certificado de servicio. Tenga en cuenta que todas las propiedades $null devueltas por el cmdlet se sustituyen por los valores predeterminados reales de tiempo de ejecución.

Posteriormente, el script recupera la información del certificado desde el almacén de certificados del sistema operativo en función de las consultas especificadas en la configuración. Para la consulta, se usa la API System.Security.Cryptography.X509Certificates de código administrado.

Por último, el script valida las propiedades NotBefore y NotAfter del certificado en función de la hora actual y da formato a la salida.

Funciones de la aplicación auxiliar

  • ResolveDefaultValue: resuelve valores predeterminados de tiempo de ejecución para las propiedades config que devuelve el cmdlet Get-ASAppServiceCertificate.

  • FindCertificates: consulta los almacenes de certificados mediante la API System.Security.Cryptography.X509Certificates.

  2012-03-05