about_Certificate_Provider
공급자 이름
인증서
드라이브
Cert:
기능
ShouldProcess
간단한 설명
PowerShell에서 X.509 인증서 저장소 및 인증서에 대한 액세스를 제공합니다.
자세한 설명
이 정보는 Windows에서 실행되는 PowerShell에만 적용됩니다.
PowerShell 인증서 공급자를 사용하면 PowerShell에서 인증서 및 인증서 저장소를 가져오기, 추가, 변경, 지우고 삭제할 수 있습니다.
인증서 드라이브는 컴퓨터의 인증서 저장소 및 인증서를 포함하는 계층 구조 네임스페이스입니다.
인증서 공급자는 다음 cmdlet을 지원합니다.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- 항목 이동
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-ItemProperty
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
이 공급자가 노출하는 형식
인증서 드라이브는 다음 형식을 노출합니다.
- Microsoft.PowerShell.Commands.X509StoreLocation- 현재 사용자 및 모든 사용자에 대한 인증서를 그룹화한 상위 수준 컨테이너입니다. 각 시스템에는 및
CurrentUser
LocalMachine
(모든 사용자) 저장소 위치가 있습니다. - System.Security.Cryptography.X509Certificates.X509Store- 인증서가 저장되고 관리되는 물리적 저장소입니다.
- 컴퓨터의 X.509 인증서를 나타내는 System.Security.Cryptography.X509Certificates.X509Certificate2. 인증서는 지문으로 식별됩니다.
인증서 드라이브 탐색
인증서 공급자는 인증서 네임스페이스를 PowerShell의 Cert:
드라이브로 노출합니다. 이 명령은 이 명령을 사용하여 Set-Location
현재 위치를 저장소 위치의 Root
인증서 저장소로 LocalMachine
변경합니다. 드라이브 수준을 Cert:
나타내려면 백슬래시(\
) 또는 슬래시(/
)를 사용합니다.
Set-Location Cert:
다른 PowerShell 드라이브의 인증서 공급자와 함께 작업할 수도 있습니다. 다른 위치에서 별칭을 참조하려면 경로에서 Cert:
드라이브 이름을 사용합니다.
PS Cert:\> Set-Location -Path LocalMachine\Root
파일 시스템 드라이브로 돌아가려면 드라이브 이름을 입력합니다. 예를 들어 입력 합니다.
Set-Location C:
참고 항목
PowerShell은 별칭을 사용하여 공급자 경로를 사용하는 친숙한 방법을 허용합니다. Get-ChildItemcd
의 별칭과 ls
같은 dir
명령은 Set-Location의 별칭이며 pwd
Get-Location의 별칭입니다.
인증서의 내용 표시: 드라이브
이 명령은 cmdlet을 Get-ChildItem
사용하여 인증서 저장소 위치에 인증서 저장소를 CurrentUser
표시합니다.
드라이브에 Cert:
없는 경우 절대 경로를 사용합니다.
PS Cert:\CurrentUser\> Get-ChildItem
인증서: 드라이브 내에 인증서 속성 표시
이 예제에서는 인증서와 함께 Get-Item
인증서를 가져오고 변수에 저장합니다.
이 예제에서는 다음을 사용하는 새 인증서 스크립트 속성(DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer)을 보여 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의 Get-ChildItem
CodeSigningCert 및 재귀 매개 변수를 사용하여 코드 서명 권한이 있는 컴퓨터의 모든 인증서를 가져옵니다.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
만료된 인증서 찾기
이 명령은 cmdlet의 Get-ChildItem
ExpiringInDays 매개 변수를 사용하여 다음 30일 이내에 만료되는 인증서를 가져옵니다.
Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30
서버 SSL 인증서 찾기
이 명령은 cmdlet의 SSLServerAuthentication 매개 변수를 사용하여 모든 서버 SSL 인증서 My
를 저장합니다WebHosting
.Get-ChildItem
$getChildItemSplat = @{
Path = 'cert:\LocalMachine\My', 'cert:\LocalMachine\WebHosting'
SSLServerAuthentication = $true
}
Get-ChildItem @getChildItemSplat
원격 컴퓨터에서 만료된 인증서 찾기
이 명령은 cmdlet을 Invoke-Command
사용하여 Srv01 및 Srv02 컴퓨터에서 명령을 실행 Get-ChildItem
합니다. ExpiringInDays 매개 변수의 값 0(0
)은 만료된 Srv01 및 Srv02 컴퓨터에서 인증서를 가져옵니다.
$invokeCommandSplat = @{
ComputerName = 'Srv01', 'Srv02'
ScriptBlock = {
Get-ChildItem -Path cert:\* -Recurse -ExpiringInDays 0
}
}
Invoke-Command @invokeCommandSplat
필터를 결합하여 특정 인증서 집합 찾기
이 명령은 다음 특성이 있는 저장소 위치의 LocalMachine
모든 인증서를 가져옵니다.
fabrikam
DNS 이름에Client Authentication
EKU에서- SendAsTrustedIssuer 속성의 값
$true
- 은 다음 30일 이내에 만료되지 않습니다.
NotAfter 속성은 인증서 만료 날짜를 저장합니다.
[DateTime] $ValidThrough = (Get-Date) + (New-TimeSpan -Days 30)
$getChildItemSplat = @{
Path = 'cert:\*'
Recurse = $true
DnsName = "*fabrikam*"
Eku = "*Client Authentication*"
}
Get-ChildItem @getChildItemSplat |
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 doesn't 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
사용하여 저장소에서 My
저장소로 인증서를 WebHosting
이동합니다.
Move-Item
인증서 저장소를 이동할 수 없으며 인증서를 다른 저장소 위치로 이동할 수 없습니다(예: 인증서를 다른 저장소 위치로 이동)LocalMachine
CurrentUser
. cmdlet은 Move-Item
저장소 내에서 인증서를 이동할 수 있지만 프라이빗 키는 이동하지 않습니다.
이 명령은 cmdlet의 Get-ChildItem
SSLServerAuthentication 매개 변수를 사용하여 인증서 저장소에서 SSL 서버 인증 인증서를 My
가져옵니다.
반환된 인증서는 cmdlet에 Move-Item
파이프되어 인증서를 저장소로 WebHosting
이동합니다.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication |
Move-Item -Destination cert:\LocalMachine\WebHosting
인증서 및 프라이빗 키 삭제
cmdlet은 Remove-Item
지정한 인증서를 삭제합니다. DeleteKey 동적 매개 변수는 프라이빗 키를 삭제합니다.
CA 저장소에서 인증서 삭제
이 명령은 CA 인증서 저장소에서 인증서를 삭제하지만 연결된 프라이빗 키는 그대로 유지합니다.
드라이브 Remove-Item
에서 Cert:
cmdlet은 DeleteKey, Path, WhatIf 및 Confirm 매개 변수만 지원합니다. 다른 모든 매개 변수는 무시됩니다.
Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0
DNS 이름에 와일드카드를 사용하여 인증서 삭제
이 명령은 DNS 이름이 포함된 모든 인증서를 삭제합니다 Fabrikam
. cmdlet의 Get-ChildItem
DNSName 매개 변수를 사용하여 인증서와 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
이제 드라이브의 Set-Item
cmdlet을 WSMan:
사용하여 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-Item
명령은 DeleteKey 매개 변수를 사용하여 지정된 인증서와 함께 프라이빗 키를 제거합니다.
Invoke-Command -Session $s {
$removeItemSplat = @{
Path = 'cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2'
DeleteKey = $true
}
Remove-Item @removeItemSplat
}
만료된 인증서 삭제
이 명령은 만료된 저장소에서 인증서를 가져오는 값과 함께 cmdlet의 0
ExpiringInDays WebHosting
매개 변수를 사용합니다.Get-ChildItem
반환된 인증서를 포함하는 변수는 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
만듭니다. 이름, 경로, WhatIf 및 Confirm 매개 변수를 지원합니다. 다른 모든 매개 변수는 무시됩니다. 이 명령은 새 인증서 저장소를 나타내는 System.Security.Cryptography.X509Certificates.X509Store 를 반환합니다.
이 명령은 저장소 위치에 명명된 CustomStore
새 인증서 저장소를 LocalMachine
만듭니다.
New-Item -Path cert:\LocalMachine\CustomStore
원격 컴퓨터에 새 인증서 저장소 만들기
이 명령은 Server01 컴퓨터의 LocalMachine
저장소 위치에 명명된 HostingStore
새 인증서 저장소를 만듭니다.
이 명령은 cmdlet을 Invoke-Command
사용하여 Server01 컴퓨터에서 명령을 실행 New-Item
합니다. 이 명령은 새 인증서 저장소를 나타내는 System.Security.Cryptography.X509Certificates.X509Store 를 반환합니다.
Invoke-Command -ComputerName Server01 -ScriptBlock {
New-Item -Path cert:\LocalMachine\CustomStore
}
WS-Man용 클라이언트 인증서 만들기
이 명령은 WS-Management 클라이언트에서 사용할 수 있는 ClientCertificate 항목을 만듭니다. 새 ClientCertificate는 ClientCertificate 디렉터리 아래에 다음과 같이 ClientCertificate_1234567890
표시됩니다. 모든 매개 변수는 필수입니다. 발급자 인증서의 지문이어야 합니다.
$newItemSplat = @{
Path = 'WSMan:\localhost\ClientCertificate'
Credential = Get-Credential
Issuer = '1b3fd224d66c6413fe20d21e38b304226d192dfe'
URI = 'wmicimv2/*'
}
New-Item @newItemSplat
인증서 저장소 삭제
원격 컴퓨터에서 인증서 저장소 삭제
이 명령은 cmdlet을 Invoke-Command
사용하여 S1 및 S2 컴퓨터에서 명령을 실행 Remove-Item
합니다. 이 명령에는 Remove-Item
저장소를 삭제하기 전에 저장소의 인증서를 삭제하는 Recurse 매개 변수가 포함됩니다.
Invoke-Command -ComputerName S1, S2 -ScriptBlock {
Remove-Item -Path cert:\LocalMachine\TestStore -Recurse
}
동적 매개 변수
동적 매개 변수는 PowerShell 공급자에 의해 추가되는 cmdlet 매개 변수이며 공급자 사용 드라이브에서 cmdlet을 사용하는 경우에만 사용할 수 있습니다. 이러한 매개 변수는 인증서 공급자의 모든 하위 디렉터리에서 유효하지만 인증서에만 적용됩니다.
참고 항목
EnhancedKeyUsageList 속성에 대해 필터링을 수행하는 매개 변수는 빈 EnhancedKeyUsageList 속성 값이 있는 항목도 반환합니다. EnhancedKeyUsageList가 비어 있는 인증서는 모든 용도로 사용할 수 있습니다.
다음 인증서 공급자 매개 변수는 PowerShell 7.1에서 다시 도입되었습니다.
- DNSName
- DocumentEncryptionCert
- EKU
- ExpiringInDays
- SSLServerAuthentication
CodeSigningCert <System.Management.Automation.SwitchParameter>
지원되는 Cmdlet
이 매개 변수는 EnhancedKeyUsageList 속성 값에 있는 Code Signing
인증서를 가져옵니다.
DeleteKey <System.Management.Automation.SwitchParameter>
지원되는 Cmdlet
이 매개 변수는 인증서를 삭제할 때 연결된 프라이빗 키를 삭제합니다.
Important
원격 컴퓨터의 저장소에서 Cert:\CurrentUser
사용자 인증서와 연결된 프라이빗 키를 삭제하려면 위임된 자격 증명을 사용해야 합니다. cmdlet은 Invoke-Command
CredSSP 매개 변수를 사용하여 자격 증명 위임을 지원합니다. 자격 증명 위임과 함께 Invoke-Command
사용하기 Remove-Item
전에 보안 위험을 고려해야 합니다.
이 매개 변수는 PowerShell 7.1에서 다시 도입되었습니다.
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
지원되는 Cmdlet
이 매개 변수는 인증서의 DNSNameList 속성에 지정된 도메인 이름 또는 이름 패턴이 있는 인증서를 가져옵니다. 이 매개 변수의 값은 다음과 같습니다 Unicode
ASCII
. Punycode 값은 유니코드로 변환됩니다. 와일드카드 문자(*
)가 허용됩니다.
이 매개 변수는 PowerShell 7.1에서 다시 도입되었습니다.
DocumentEncryptionCert <System.Management.Automation.SwitchParameter>
지원되는 Cmdlet
이 매개 변수는 EnhancedKeyUsageList 속성 값에 있는 Document Encryption
인증서를 가져옵니다.
EKU <System.String>
지원되는 Cmdlet
이 매개 변수는 인증서의 EnhancedKeyUsageList 속성에 지정된 텍스트 또는 텍스트 패턴이 있는 인증서를 가져옵니다. 와일드카드 문자(*
)가 허용됩니다. EnhancedKeyUsageList 속성에는 EKU의 이름 및 OID 필드가 포함됩니다.
이 매개 변수는 PowerShell 7.1에서 다시 도입되었습니다.
ExpiringInDays <System.Int32>
지원되는 Cmdlet
이 매개 변수는 지정된 일 수 또는 그 이전에 만료되는 인증서를 가져옵니다. 값 0은 만료된 인증서를 가져옵니다.
이 매개 변수는 PowerShell 7.1에서 다시 도입되었습니다.
ItemType <System.String>
이 매개 변수는 .에서 만든 New-Item
항목의 형식을 지정하는 데 사용됩니다. cmdlet은 New-Item
값 Store
만 지원합니다. New-Item
cmdlet은 새 인증서를 만들 수 없습니다.
지원되는 Cmdlet
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
지원되는 Cmdlet
SSL 웹 호스팅에 대한 서버 인증서만 가져옵니다. 이 매개 변수는 EnhancedKeyUsageList 속성 값에 있는 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 명령을 실행하거나 파일 시스템 드라이브를 지정하는 매개 변수 Get-Help
를 사용합니다-Path
.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert:
참고 항목
PowerShell