Сценарий 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
Установка и запуск этого примера
В следующем примере показано, как запускается этот сценарий:
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». Это необязательные параметры; если они не указаны, будет подразумеваться область сервера. Если в указанной области не настроены сертификаты или просроченных сертификатов нет, то сценарий не выведет ничего.
Для навигации по всем доступным в хранилищах сертификатам можно использовать поставщик сертификатов Windows PowerShell. Это поможет настроить для службы действительный сертификат. Дополнительные сведения об использовании поставщика сертификатов Windows PowerShell можно найти в статье Поставщик сертификатов (https://go.microsoft.com/fwlink/?LinkId=194421).
PS cd cert:\LocalMachine\My PS cert:\LocalMachine\My> dir | select * <results omitted>
Удаление примера
- Просто закройте сеанс 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