WCF/WF 서비스에서 사용하는 만료된 인증서를 검색하는 Windows PowerShell 스크립트

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 구성 cmdlet이 반환하는 서비스 구성 정보를 기반으로 하여 인증서 쿼리를 실행합니다.

  • 쿼리된 인증서에 대한 유효성 검사를 수행하고 만료된 인증서 목록을 반환합니다.

참고

샘플은 교육용으로만 제공됩니다. 프로덕션 환경에서 사용하도록 작성된 것은 아니며 프로덕션 환경에서 테스트되지 않았습니다. Microsoft는 이러한 샘플에 대한 기술 지원을 제공하지 않습니다.

사전 요구 사항

Windows PowerShell 스크립팅 및 AppFabric cmdlet에 대해 잘 알고 있어야 합니다.

이 샘플의 사전 요구 사항은 다음과 같습니다.

  • Windows PowerShell v2가 설치되어 있습니다.

  • 기본 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. Windows PowerShell 세션을 닫기만 하면 됩니다. 이 샘플을 실행해도 컴퓨터에 있는 리소스는 수정되지 않습니다.

설명

이 샘플의 스크립트는 다음과 같은 세 개의 섹션으로 구성되어 있습니다.

초기화

AppFabric cmdlet 모듈을 로드하는 스크립트의 첫 부분입니다.

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

주 스크립트

주 스크립트는 먼저 AppFabric Get-ASAppService cmdlet을 호출하여 지정된 범위 아래에 있는 WCF/WF 서비스 목록을 검색한 다음 이 서비스 목록을 Get-ASAppServiceCertificate cmdlet에 파이프하여 서비스 인증서 구성을 읽습니다. 이 cmdlet이 반환하는 모든 $null 속성은 실제 런타임 기본값으로 대체됩니다.

그런 다음 스크립트는 구성에 지정된 쿼리를 기반으로 하여 운영 체제의 인증서 저장소에서 인증서 정보를 검색합니다. 관리 코드 System.Security.Cryptography.X509Certificates API는 쿼리에 사용됩니다.

마지막으로 스크립트는 현재 시간을 기준으로 인증서의 NotBeforeNotAfter 속성을 확인하고 출력을 포맷합니다.

도우미 함수

  • ResolveDefaultValue - Get-ASAppServiceCertificate cmdlet이 반환하는 구성 속성의 런타임 기본값을 확인합니다.

  • FindCertificates - System.Security.Cryptography.X509Certificates API를 사용하여 인증서 저장소를 쿼리합니다.

  2011-12-05