인증서_제공자에_대하여

공급자 이름

인증서

구동 장치

Cert:

역량

처리해야 함

간단한 설명

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

자세한 설명

이 정보는 Windows에서 실행되는 PowerShell에만 적용됩니다.

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

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

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

이 공급자가 노출하는 형식

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

  • 저장소 위치(Microsoft.PowerShell.Commands.X509StoreLocation)는 현재 사용자 및 모든 사용자에 대한 인증서를 그룹화하는 상위 수준 컨테이너입니다. 각 시스템에는 CurrentUserLocalMachine(모든 사용자) 저장소 위치가 있습니다.
  • 인증서 저장소(System.Security.Cryptography.X509Certificates.X509Store) - 인증서가 저장되고 관리되는 물리적 저장소입니다.
  • X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 인증서로, 각 인증서는 컴퓨터의 X.509 인증서를 나타냅니다. 인증서는 지문으로 식별됩니다.

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

Set-Location Cert:

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

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

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

Set-Location C:

비고

PowerShell은 별칭을 사용하여 공급자 경로를 사용하는 친숙한 방법을 허용합니다. dirls 같은 명령은 이제 Get-ChildItem대한 별칭입니다. cdSet-Location대한 별칭입니다. pwdGet-Location의 별칭입니다.

인증서의 내용 표시: 드라이브

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

드라이브에 있지 않은 Cert: 경우 절대 경로를 사용하십시오.

PS Cert:\CurrentUser\> Get-ChildItem

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

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

$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의 CodeSigningCertGet-ChildItem 매개 변수를 사용하여 코드 서명 권한이 있는 컴퓨터의 모든 인증서를 가져옵니다.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

만료된 인증서 찾기

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

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

서버 SSL 인증서 찾기

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

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

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

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

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

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

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

  • DNS 이름에 fabrikam
  • EKU의 Client Authentication
  • $true 속성에 대한 값입니다.
  • 앞으로 30일 이내에 만료되지 마십시오.

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

[DateTime] $ValidThrough = (Get-Date) + (New-TimeSpan -Days 30)
Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
  -EKU "*Client Authentication*" | Where-Object {
                                     $_.SendAsTrustedIssuer -and `
                                     $_.NotAfter -gt $ValidThrough
                                   }

인증서 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 저장소로 이동

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

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

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

반환된 인증서는 인증서를 Move-Item 저장소로 이동하는 WebHosting cmdlet으로 파이프됩니다.

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

인증서 및 프라이빗 키 삭제

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

CA 저장소에서 인증서 삭제

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

Cert: 드라이브에서 Remove-Item cmdlet은 DeleteKey, 경로, WhatIf 확인 매개 변수만 지원합니다. 다른 모든 매개 변수는 무시됩니다.

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

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

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

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

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

이 일련의 명령은 위임을 사용하도록 설정한 다음 원격 컴퓨터에서 인증서 및 연결된 프라이빗 키를 삭제합니다. 원격 컴퓨터에서 프라이빗 키를 삭제하려면 위임된 자격 증명을 사용해야 합니다.

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

Enable-WSManCredSSP -Role Client -DelegateComputer S1

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

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

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

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

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

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

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

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

만료된 인증서 삭제

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

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

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

인증서 만들기

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

인증서 저장소 만들기

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

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

New-Item -Path cert:\LocalMachine\CustomStore

원격 컴퓨터에 새 인증서 저장소 만들기

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

이 명령은 Invoke-Command cmdlet을 사용하여 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

인증서 저장소 삭제

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

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

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

동적 매개 변수

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

비고

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

다음 인증서 공급자 매개 변수는 PowerShell 7.1에서 다시 도입되었습니다.

  • DNSName
  • documentEncryptionCert
  • 에쿠
  • 만료In일
  • SSLServer인증

CodeSigningCert <System.Management.Automation.Switch매개 변수>

지원되는 Cmdlet

  • 아이템 가져오기
  • Get-ChildItem

이 매개 변수는 Code Signing 속성 값에 있는 인증서를 가져옵니다.

DeleteKey <System.Management.Automation.SwitchParameter>

지원되는 Cmdlet

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

중요합니다

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

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

DNS 이름 <Microsoft.PowerShell.Commands.DnsNameRepresentation>

지원되는 Cmdlet

  • Get-ChildItem

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

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

DocumentEncryptionCert <System.Management.Automation.Switch매개 변수>

지원되는 Cmdlet

  • 아이템 가져오기
  • Get-ChildItem

이 매개 변수는 Document Encryption 속성 값에 있는 인증서를 가져옵니다.

EKU <시스템.문자열>

지원되는 Cmdlet

  • Get-ChildItem

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

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

ExpiringInDays <System.Int32 (영문)>

지원되는 Cmdlet

  • Get-ChildItem

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

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

항목 유형 <System.String>

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

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

  • Certificate Provider
  • Certificate
  • Store
  • StoreLocation

지원되는 Cmdlet

SSLServerAuthentication <System.Management.Automation.Switch매개 변수>

지원되는 Cmdlet

  • Get-ChildItem

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

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

스크립트 속성

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

  • dnsNameList: DnsNameList 속성을 채웁니다. 인증서 공급자는 SAN(SubjectAlternativeName) 확장의 DNSName 항목에서 콘텐츠를 복사합니다. SAN 확장이 비어 있으면 인증서의 주체 필드의 콘텐츠로 속성이 채워집니다.
  • EnhancedKeyUsageList: EnhancedKeyUsageList 속성을 채우려면 인증서 공급자가 인증서에 EKU(EnhancedKeyUsage) 필드의 OID 속성을 복사하고 이를 위한 이름을 만듭니다.
  • sendAsTrustedIssuer: SendAsTrustedIssuer 속성을 채웁니다. 인증서 공급자는 인증서에서 SendAsTrustedIssuer 속성을 복사합니다. 자세한 내용은 클라이언트 인증대한 신뢰할 수 있는 발급자의 관리를 참조하세요.

이러한 새로운 기능을 사용하면 DNS 이름 및 만료 날짜에 따라 인증서를 검색하고 클라이언트 및 서버 인증 인증서를 EKU(고급 키 사용량) 속성 값으로 구분할 수 있습니다.

파이프라인 사용

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

도움 받기

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

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

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

참고하십시오