다음을 통해 공유


인증서 공급자

공급자 이름

인증서

드라이브

Cert:

기능

ShouldProcess

간단한 설명

PowerShell에서 X.509 인증서 저장소 및 인증서에 대한 액세스를 제공합니다.

자세한 설명

PowerShell 인증서 공급자를 사용하면 PowerShell에서 인증서 및 인증서 저장소를 가져오기, 추가, 변경, 지우기 및 삭제할 수 있습니다.

인증서 드라이브는 컴퓨터의 인증서 저장소 및 인증서를 포함하는 계층 구조 네임스페이스입니다.

인증서 공급자는 이 문서에서 다루는 다음 cmdlet을 지원합니다.

이 공급자가 노출하는 형식

인증서 드라이브는 다음 형식을 노출합니다.

  • 현재 사용자 및 모든 사용자에 대한 인증서를 그룹화한 상위 수준 컨테이너인 저장소 위치(Microsoft.PowerShell.Commands.X509StoreLocation). 각 시스템에는 CurrentUser 및 LocalMachine(모든 사용자) 저장소 위치가 있습니다.

  • 인증서 저장소(System.Security.Cryptography.X509Certificates.X509Store)는 인증서를 저장하고 관리하는 실제 저장소입니다.

  • X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 인증서는 각각 컴퓨터의 X.509 인증서를 나타냅니다. 인증서는 지문으로 식별됩니다.

인증서 공급자는 인증서 네임스페이스를 PowerShell의 Cert: 드라이브로 노출합니다. 이 명령은 명령을 사용하여 Set-Location 현재 위치를 LocalMachine 저장소 위치의 루트 인증서 저장소로 변경합니다. 백슬래시(\) 또는 슬래시(/)를 사용하여 드라이브 수준을 Cert: 나타냅니다.

Set-Location Cert:

다른 PowerShell 드라이브의 인증서 공급자와 함께 작업할 수도 있습니다. 다른 위치에서 별칭을 참조하려면 경로에서 Cert: 드라이브 이름을 사용합니다.

PS Cert:\> Set-Location -Path LocalMachine\Root

파일 시스템 드라이브로 돌아가려면 드라이브 이름을 입력합니다. 예를 들어 다음과 같이 입력합니다.

Set-Location C:

참고

PowerShell은 별칭을 사용하여 공급자 경로를 사용하는 친숙한 방법을 허용합니다. 및 ls 와 같은 dir 명령은 이제 Get-ChildItemcd의 별칭이며 Set-Location의 별칭입니다. 및 pwdGet-Location의 별칭입니다.

Cert: 드라이브의 내용 표시

새 동적 매개 변수, DnsName, EKU, SSLServerAuthenticationExpiringInDays 가 드라이브의 Get-ChildItem cmdlet에 Cert: 추가되었습니다. 새 동적 매개 변수는 Windows PowerShell 3.0 이상 PowerShell 릴리스에서 사용할 수 있습니다. 공급자 매개 변수는 Windows Server 2012 이상에서 IIS 8.0에서 작동합니다.

이 명령은 cmdlet을 Get-ChildItem 사용하여 CurrentUser 인증서 저장소 위치에 인증서 저장소를 표시합니다.

드라이브에 Cert: 없는 경우 절대 경로를 사용합니다.

PS Cert:\CurrentUser\> Get-ChildItem

인증서: 드라이브 내에 인증서 속성 표시

이 예제에서는 와 함께 Get-Item 인증서를 가져오고 변수에 저장합니다. 이 예제에서는 를 사용하는 Select-Object새 인증서 스크립트 속성(DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer)을 보여 줍니다.

$c = Get-Item cert:\LocalMachine\My\52A149D0393CE8A8D4AF0B172ED667A9E3A1F44E
$c | Format-List DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer
DnsNameList          : {SERVER01.contoso.com}
EnhancedKeyUsageList : {WiFi-Machine (1.3.6.1.4.1.311.42.2.6),
                       Client Authentication (1.3.6.1.5.5.7.3.2)}
SendAsTrustedIssuer  : False

모든 CodeSigning 인증서 찾기

이 명령은 cmdlet의 Get-ChildItemCodeSigningCertRecurse 매개 변수를 사용하여 코드 서명 권한이 있는 컴퓨터의 모든 인증서를 가져옵니다.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

만료된 인증서 찾기

이 명령은 cmdlet의 ExpiringInDays 매개 변수를 Get-ChildItem 사용하여 다음 30일 이내에 만료될 인증서를 가져옵니다.

Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30

서버 SSL 인증서 찾기

이 명령은 cmdlet의 Get-ChildItemSSLServerAuthentication 매개 변수를 사용하여 My 및 WebHosting 저장소에 있는 모든 서버 SSL 인증서를 가져옵니다.

Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
  -SSLServerAuthentication

원격 컴퓨터에서 만료된 인증서 찾기

이 명령은 cmdlet을 Invoke-Command 사용하여 Srv01 및 Srv02 컴퓨터에서 명령을 실행 Get-ChildItem 합니다. ExpiringInDays 매개 변수의 값 0(0)은 만료된 Srv01 및 Srv02 컴퓨터에서 인증서를 가져옵니다.

Invoke-Command -ComputerName Srv01, Srv02 {Get-ChildItem -Path cert:\* `
  -Recurse -ExpiringInDays 0}

필터를 결합하여 특정 인증서 집합 찾기

이 명령은 다음 특성이 있는 LocalMachine 저장소 위치의 모든 인증서를 가져옵니다.

  • DNS 이름의 "fabrikam"
  • EKU의 "클라이언트 인증"
  • SendAsTrustedIssuer 속성의 $true 값입니다.
  • 는 다음 30일 이내에 만료되지 않습니다.

NotAfter 속성은 인증서 만료 날짜를 저장합니다.

Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
  -EKU "*Client Authentication*" | Where-Object {
                                     $_.SendAsTrustedIssuer -and `
                                     $_.NotAfter -gt (get-date).AddDays.(30)
                                   }

인증서 MMC 스냅인 열기

cmdlet은 Invoke-Item 기본 애플리케이션을 사용하여 지정한 경로를 엽니다. 인증서의 경우 기본 애플리케이션은 인증서 MMC 스냅인입니다.

이 명령은 지정된 인증서를 관리할 인증서 MMC 스냅인을 엽니다.

Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B

인증서 복사

인증서 복사는 인증서 공급자에서 지원되지 않습니다. 인증서를 복사하려고 하면 이 오류가 표시됩니다.

$path = "Cert:\LocalMachine\Root\E2C0F6662D3C569705B4B31FE2CBF3434094B254"
PS Cert:\LocalMachine\> Copy-Item -Path $path -Destination .\CA\
Copy-Item : Provider operation stopped because the provider does not support
this operation.
At line:1 char:1
+ Copy-Item -Path $path -Destination .\CA\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotImplemented: (:) [Copy-Item],
                              PSNotSupportedException
    + FullyQualifiedErrorId : NotSupported,
                              Microsoft.PowerShell.Commands.CopyItemCommand

인증서 이동

모든 SSL 서버 인증 인증서를 WebHosting 저장소로 이동

이 명령은 cmdlet을 Move-Item 사용하여 내 저장소에서 WebHosting 저장소로 인증서를 이동합니다.

Move-Item 는 인증서 저장소를 이동하지 않으며 인증서를 LocalMachine에서 CurrentUser로 이동하는 것과 같은 다른 저장소 위치로 인증서를 이동하지 않습니다. cmdlet은 Move-Item 인증서를 이동하지만 프라이빗 키는 이동하지 않습니다.

이 명령은 cmdlet의 SSLServerAuthentication 매개 변수를 Get-ChildItem 사용하여 MY 인증서 저장소에서 SSL 서버 인증 인증서를 가져옵니다.

반환된 인증서는 cmdlet에 Move-Item 파이프되어 인증서를 WebHosting 저장소로 이동합니다.

Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication | Move-Item `
  -Destination cert:\LocalMachine\WebHosting

인증서 및 개인 키 삭제

cmdlet은 Remove-Item 지정한 인증서를 제거합니다. 동적 매개 변수는 -DeleteKey 프라이빗 키를 삭제합니다.

CA 저장소에서 인증서 삭제

이 명령은 CA 인증서 저장소에서 인증서를 삭제하지만 연결된 개인 키는 그대로 둡니다.

드라이브에서 Cert: cmdlet은 Remove-ItemDeleteKey, Path, WhatIfConfirm 매개 변수만 지원합니다. 다른 모든 매개 변수는 무시됩니다.

Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0

DNS 이름에서 와일드카드를 사용하여 인증서 삭제

이 명령은 DNS 이름에 "Fabrikam"이 포함된 모든 인증서를 삭제합니다. cmdlet의 DNSName 매개 변수를 Get-ChildItem 사용하여 인증서와 cmdlet을 Remove-Item 가져와 삭제합니다.

Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item

원격 컴퓨터에서 프라이빗 키 삭제

이 명령 시리즈는 원격 컴퓨터에서 위임을 사용하도록 설정하고, 인증서 및 연결된 개인 키를 삭제합니다. 원격 컴퓨터에서 개인 키를 삭제하려면 위임된 자격 증명을 사용해야 합니다.

cmdlet을 Enable-WSManCredSSP 사용하여 S1 원격 컴퓨터의 클라이언트에서 CredSSP(자격 증명 보안 서비스 공급자) 인증을 사용하도록 설정합니다. CredSSP는 대리 인증을 허용합니다.

Enable-WSManCredSSP -Role Client -DelegateComputer S1

cmdlet을 Connect-WSMan 사용하여 S1 컴퓨터를 로컬 컴퓨터의 WinRM 서비스에 연결합니다. 이 명령이 완료되면 PowerShell의 로컬 WSMan: 드라이브에 S1 컴퓨터가 나타납니다.

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

이제 WSMan: 드라이브에서 Set-Item cmdlet을 사용하여 WinRM 서비스에 CredSSP 특성을 사용하도록 설정할 수 있습니다.

Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true

cmdlet을 사용하여 s1 컴퓨터에서 New-PSSession 원격 세션을 시작하고 CredSSP 인증을 지정합니다. 세션을 변수에 $s 저장합니다.

$s  = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01

마지막으로 cmdlet을 Invoke-Command 사용하여 변수의 Remove-Item 세션에서 $s 명령을 실행합니다. 명령은 Remove-ItemDeleteKey 매개 변수를 사용하여 지정된 인증서와 함께 프라이빗 키를 제거합니다.

Invoke-Command -Session $s { Remove-Item `
  -Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
  -DeleteKey
  }

만료된 인증서 삭제

이 명령은 값이 0인 cmdlet의 Get-ChildItemExpiringInDays 매개 변수를 사용하여 만료된 WebHosting 저장소에서 인증서를 가져옵니다.

반환된 인증서를 포함하는 변수는 cmdlet에 Remove-Item 파이프되어 삭제됩니다. 명령은 DeleteKey 매개 변수를 사용하여 인증서와 함께 프라이빗 키를 삭제합니다.

$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey

인증서 만들기

cmdlet은 New-Item인증서 공급자에 새 인증서를 만들지 않습니다. New-SelfSignedCertificate cmdlet을 사용하여 테스트 목적으로 인증서를 만듭니다.

인증서 저장소 만들기

Cert: 드라이브에서 cmdlet은 New-Item LocalMachine 저장소 위치에 인증서 저장소를 만듭니다. 이름, 경로, WhatIfConfirm 매개 변수를 지원합니다. 다른 모든 매개 변수는 무시됩니다. 이 명령은 새 인증서 저장소를 나타내는 System.Security.Cryptography.X509Certificates.X509Store 를 반환합니다.

이 명령은 LocalMachine 저장소 위치에서 이름이 "CustomStore"인 새 인증서 저장소를 만듭니다.

New-Item -Path cert:\LocalMachine\CustomStore

원격 컴퓨터에서 새 인증서 저장소 Create

이 명령은 Server01 컴퓨터의 LocalMachine 저장소 위치에 이름이 "HostingStore"인 새 인증서 저장소를 만듭니다.

명령은 cmdlet을 Invoke-Command 사용하여 Server01 컴퓨터에서 명령을 실행 New-Item 합니다. 이 명령은 새 인증서 저장소를 나타내는 System.Security.Cryptography.X509Certificates.X509Store 를 반환합니다.

Invoke-Command { New-Item -Path cert:\LocalMachine\CustomStore } `
  -ComputerName Server01

WS-Man 대한 클라이언트 인증서 만들기

이 명령은 WS-Management 클라이언트에서 사용할 수 있는 ClientCertificate 항목을 만듭니다. 새 ClientCertificateClientCertificate 디렉터리 아래에 "ClientCertificate_1234567890"로 표시됩니다. 모든 매개 변수는 필수 사항입니다. 발급자는 발급자 인증서의 지문이어야 합니다.

$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
         -Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
         -URI wmicimv2/* -Credential $cred

인증서 저장소 삭제

원격 컴퓨터에서 인증서 저장소 삭제

이 명령은 cmdlet을 Invoke-Command 사용하여 S1 및 S2 컴퓨터에서 명령을 실행 Remove-Item 합니다. 명령에는 Remove-Item 저장소를 삭제하기 전에 저장소의 인증서를 삭제하는 Recurse 매개 변수가 포함됩니다.

Invoke-Command { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
  -ComputerName S1, S2

동적 매개 변수

동적 매개 변수는 PowerShell 공급자에 의해 추가되는 cmdlet 매개 변수이며 공급자 사용 드라이브에서 cmdlet을 사용하는 경우에만 사용할 수 있습니다. 이러한 매개 변수는 인증서 공급자의 모든 하위 디렉터리에서 유효하지만 인증서에만 적용됩니다.

참고

또한 속성에 대해 필터링을 수행하는 매개 변수는 EnhancedKeyUsageListEnhancedKeyUsageList 속성 값이 있는 항목을 반환합니다. EnhancedKeyUsageList가 비어 있는 인증서는 모든 용도로 사용할 수 있습니다.

ItemType <문자열>

이 매개 변수를 사용하면 에서 만든 New-Item항목의 유형을 지정할 수 있습니다.

드라이브에서 Certificate 다음 값이 허용됩니다.

  • 인증서 공급자
  • 인증서
  • 스토어
  • StoreLocation

지원되는 Cmdlet

CodeSigningCert <System.Management.Automation.SwitchParameter>

지원되는 Cmdlet

이 매개 변수는 EnhancedKeyUsageList 속성 값에 "코드 서명"이 있는 인증서를 가져옵니다.

DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>

지원되는 Cmdlet

이 매개 변수는 인증서의 DNSNameList 속성에 지정된 도메인 이름 또는 이름 패턴이 있는 인증서를 가져옵니다. 이 매개 변수의 값은 "유니코드" 또는 "ASCII"일 수 있습니다. Punycode 값은 유니코드로 변환됩니다. 와일드카드 문자(*)를 사용할 수 있습니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

EKU <System.String>

지원되는 Cmdlet

이 매개 변수는 인증서의 속성에 지정된 텍스트 또는 텍스트 패턴이 EnhancedKeyUsageList 있는 인증서를 가져옵니다. 와일드카드 문자(*)를 사용할 수 있습니다. 속성에는 EnhancedKeyUsageList EKU의 이름 및 OID 필드가 포함됩니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

ExpiringInDays <System.Int32>

지원되는 Cmdlet

이 매개 변수는 지정된 일 수 또는 그 이전에 만료되는 인증서를 가져옵니다. 0값을 지정하면 만료된 인증서를 가져옵니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

지원되는 Cmdlet

SSL 웹 호스팅을 위한 서버 인증서만 가져옵니다. 이 매개 변수는 속성 값에 "서버 인증"이 있는 인증서를 EnhancedKeyUsageList 가져옵니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

DeleteKey <System.Management.Automation.SwitchParameter>

지원되는 Cmdlet

이 매개 변수는 인증서를 삭제할 때 연결된 프라이빗 키를 삭제합니다.

중요

원격 컴퓨터의 저장소에 Cert:\CurrentUser 있는 사용자 인증서와 연결된 프라이빗 키를 삭제하려면 위임된 자격 증명을 사용해야 합니다. cmdlet은 Invoke-CommandCredSSP 매개 변수를 사용하여 자격 증명 위임을 지원합니다. 및 자격 증명 위임을 Invoke-Command 사용하기 Remove-Item 전에 보안 위험을 고려해야 합니다.

이 매개 변수는 Windows PowerShell 3.0에서 도입되었습니다.

스크립트 속성

인증서를 쉽게 검색하고 관리할 수 있도록 인증서를 나타내는 x509Certificate2 개체에 새 스크립트 속성이 추가되었습니다.

  • DnsNameList: 속성을 채우기 DnsNameList 위해 인증서 공급자는 SAN(SubjectAlternativeName) 확장의 DNSName 항목에서 콘텐츠를 복사합니다. SAN 확장이 비어 있으면 속성은 인증서의 제목 필드에 있는 내용으로 채워집니다.

  • EnhancedKeyUsageList: 속성을 채우기 EnhancedKeyUsageList 위해 인증서 공급자는 인증서에 있는 EKU(EnhancedKeyUsage) 필드의 OID 속성을 복사하고 이름을 만듭니다.

  • SendAsTrustedIssuer: 속성을 채우기 SendAsTrustedIssuer 위해 인증서 공급자는 인증서에서 SendAsTrustedIssuer 속성을 복사합니다. 자세한 내용은 클라이언트 인증을 위한 신뢰할 수 있는 발급자 관리를 참조하세요.

이러한 새 기능을 통해 DNS 이름과 만료 날짜를 기준으로 인증서를 검색하고, EKU(확장된 키 사용) 속성의 값으로 클라이언트 및 서버 인증 인증서를 구분할 수 있습니다.

파이프라인 사용

공급자 cmdlet은 파이프라인 입력을 허용합니다. 파이프라인을 사용하여 한 cmdlet에서 다른 공급자 cmdlet으로 공급자 데이터를 전송하여 작업을 간소화할 수 있습니다. 공급자 cmdlet과 함께 파이프라인을 사용하는 방법에 대한 자세한 내용은 이 문서 전체에서 제공하는 cmdlet 참조를 참조하세요.

도움말 보기

Windows PowerShell 3.0부터는 이러한 cmdlet이 파일 시스템 드라이브에서 동작하는 방식을 설명하는 공급자 cmdlet에 대한 사용자 지정된 도움말 항목을 볼 수 있습니다.

파일 시스템 드라이브에 대해 사용자 지정된 도움말 topics 얻으려면 파일 시스템 드라이브에서 Get-Help 명령을 실행하거나 Get-Help의 매개 변수를 사용하여 -Path 파일 시스템 드라이브를 지정합니다.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert:

추가 정보

about_Providers

about_Signing

Get-AuthenticodeSignature

Set-AuthenticodeSignature

Get-PfxCertificate