Поделиться через


Сценарий Windows PowerShell для выявления просроченных сертификатов, используемых службами WCF и WF

Конфигурация для указания сертификата, который должны использовать службы WCF и WF, выглядит следующим образом:

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

Конфигурация — это строка запроса к хранилищу сертификатов операционной системы. Сопоставить запрос из конфигурации службы с реальным сертификатом и проверить такие сведения, как дата окончания срока действия, может быть непросто.

В этом примере показано, как написать сценарий Windows PowerShell, выполняющий следующие действия:

  • Выполнение запросов сертификатов по сведениям о конфигурации служб, возвращаемым командлетами настройки AppFabric.

  • Проверка запрошенных сертификатов с возвратом списка просроченных сертификатов.

Примечание

Примеры предназначены только для образовательных целей. Они не предназначены для использования в рабочей среде и не тестировались в ней. Корпорация Майкрософт не предоставляет техническую поддержку для этих примеров.

Предварительные условия

Пользователи должны уметь работать со сценариями Windows PowerShell и командлетами AppFabric.

В примере предполагается следующее:

  • Установлена среда Windows PowerShell 2.0.

  • Была выполнена установка AppFabric по умолчанию.

Расположение примера и файлов

В пакет файлов примера входят следующие файлы:

  • Readme.mhtml

  • Code\detectExpiredCertificates.ps1

Установка и запуск этого примера

  1. В следующем примере показано, как запускается этот сценарий:

    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    
    

    Примечание

    Чтобы пример заработал, может потребоваться сменить политику выполнения с Restricted на RemoteSigned. Выполните команду help Set-ExecutionPolicy для получения дополнительных сведений.

    Примечание

    Два параметра (имя сайта и виртуальный путь) задают область поиска. В приведенном выше примере на наличие просроченных сертификатов будут проверены все службы в приложении «MyApp». Это необязательные параметры; если они не указаны, будет подразумеваться область сервера. Если в указанной области не настроены сертификаты или просроченных сертификатов нет, то сценарий не выведет ничего.

  2. Для навигации по всем доступным в хранилищах сертификатам можно использовать поставщик сертификатов Windows PowerShell. Это поможет настроить для службы действительный сертификат. Дополнительные сведения об использовании поставщика сертификатов Windows PowerShell можно найти в статье Поставщик сертификатов (https://go.microsoft.com/fwlink/?LinkId=194421).

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

Удаление примера

  1. Просто закройте сеанс PowerShell, так как запуск примера не приводит к изменению каких-либо ресурсов на компьютере.

Демонстрации

Сценарий в примере содержит три раздела:

Инициализация

Первая часть сценария позволяет гарантировать, что загружен модуль командлетов AppFabric.

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

Главный сценарий

Главный сценарий сначала извлекает список служб WCF и WF в указанной области, вызывая для этого командлет AppFabric Get-ASAppService. Затем он конвейеризирует список служб в командлет Get-ASAppServiceCertificate, чтобы считать конфигурацию сертификатов служб. Обратите внимание, что все возвращаемые командлетом свойства, равные $null, заменяются фактическими значениями времени выполнения, используемыми по умолчанию.

Затем сценарий извлекает сведения о сертификатах из хранилища сертификатов операционной системы, используя запросы, заданные в конфигурации. Для запроса используется API управляемого кода System.Security.Cryptography.X509Certificates.

Наконец сценарий проверяет свойства NotBefore и NotAfter сертификатов по текущей дате и форматирует выходные данные.

Вспомогательные функции

  • ResolveDefaultValue - получает значения времени выполнения по умолчанию для свойств конфигурации, возвращаемых командлетом Get-ASAppServiceCertificate.

  • FindCertificates - запрашивает хранилища сертификатов, используя API System.Security.Cryptography.X509Certificates.

  2011-12-05