次の方法で共有


Certificate プロバイダー

適用対象: Windows PowerShell 4.0, Windows PowerShell 5.0

プロバイダー名

証明書

ドライブ

Cert:

概要

Windows PowerShell の X.509 証明書ストアと証明書へのアクセスを提供します。

詳細説明

Windows PowerShell 証明書プロバイダーでは、証明書名前空間を移動し、証明書ストアと証明書を表示できます。Microsoft 管理コンソール (MMC) の証明書スナップインを開くこともできます。

注記:Windows PowerShell 3.0 より、Certificate プロバイダーを含む Microsoft.PowerShell.Security モジュールはセッションによっては自動的にインポートされなくなりました。Cert: ドライブを使用するには、Import-Module コマンドレットを使用してモジュールをインポートするか、「Set-Location Cert:」コマンドなど、Cert: ドライブ使用するコマンドを実行します。

Windows PowerShell 3.0 より、証明書プロバイダーのサポート機能が強化され、Web ホスティングのために Secure Socket Layer (SSL) 証明書を管理できるようになりました。LocalMachine 証明書ストアの場所で証明書ストアを作成し、削除し、証明書を検索し、移動し、削除するコマンドレットと新しい動的パラメーターが追加されました。

新しい動的パラメーター、DnsName、EKU、SSLServerAuthentication、ExpiringInDays が Cert: ドライブの Get-ChildItem コマンドレットに追加されました。また、DeleteKey 動的パラメーターが Cert: ドライブの Remove-Item に追加されました。新しい動的パラメーターは Windows PowerShell 3.0 とそれ以降の Windows PowerShell リリースで利用できて、Windows Server オペレーティング システムの Windows Server 2012 以降のリリースで利用できる IIS 8.0 と連動します。

新しいスクリプト パラメーター、DnsNameList、EnhancedKeyUsageList、SendAsTrustedIssuer が x509Certificate2 オブジェクトに追加されました。このオブジェクトは証明書を表し、証明書の検索と管理を簡単にします。

これらの新機能を利用すると、DNS 名と有効期限に基づいて証明書を検索したり、拡張キー使用法 (EKU) プロパティの値でクライアントとサーバーの認証証明書を区別したりできます。

これらの拡張機能は IIS により作成された WebHosting 証明書ストアをサポートするように設計されています。この証明書ストアは、動的共有ホスティングに必要な数千の証明書を効率的に自動管理するために拡大/縮小できるように最適化されています。WebHosting 証明書ストアは IIS 8.0 より利用できます。IIS 8.0 は Windows Server オペレーティング システムの Windows Server 2012 以降のリリースの Web Server (IIS) で利用できます。

DnsNameList プロパティに入力するために、証明書プロバイダーは SubjectAlternativeName (SAN) 拡張子の DNSName エントリからコンテンツをコピーします。SAN 拡張子が空の場合、証明書の Subject フィールドのコンテンツがプロパティに入力されます。

EnhancedKeyUsageList プロパティに入力するために、証明書プロバイダーは証明書の EnhancedKeyUsage (EKU) フィールドの OID プロパティをコピーし、それにフレンドリ名を付けます。

証明書プロバイダーは Windows PowerShell の Cert: ドライブとして証明書名前空間を公開します。Cert: ドライブには次の 3 つのレベルがあります。

-- ストアの場所 (Microsoft.PowerShell.Commands.X509StoreLocation)。これは現在のユーザーとすべてのユーザーの証明書をグループ化する上位コンテナーです。各システムに CurrentUser と LocalMachine (すべてのユーザー) のストアの場所があります。

-- 証明書ストア (System.Security.Cryptography.X509Certificates.X509Store)。これは証明書が保存され、管理される物理的なストアです。

-- X.509 証明書 (System.Security.Cryptography.X509Certificates.X509Certificate2)。これはそれぞれコンピューター上の X.509 証明書を表します。証明書は拇印により識別されます。

Windows PowerShell 3.0 では、証明書プロバイダーは Get-LocationSet-LocationGet-ItemGet-ChildItemInvoke-ItemMove-ItemNew-ItemRemove-Item コマンドレットをサポートします。

Windows PowerShell 2.0 では、証明書プロバイダーは Get-LocationSet-LocationGet-ItemGet-ChildItemInvoke-Item コマンドレットをサポートします。

また、証明書プロバイダーが含まれる Windows PowerShell Security モジュール (Microsoft.PowerShell.Security) には、Authenticode 署名を取得し、設定し、証明書を取得するコマンドレットも含まれます。Security モジュールのコマンドレット一覧が必要な場合、「Get-Command -module *security」と入力します。

機能

ShouldProcess

Cert:ドライブに移動する

-------------------------- 例 1 --------------------------

このコマンドは Set-Location コマンドレットを使用し、現在の場所を Cert: ドライブに変更します。

set-location cert:

-------------------------- 例 2 --------------------------

このコマンドは Set-Location コマンドを使用し、現在の場所を LocalMachine ストアの場所のルート証明書ストアに変更します。バックスラッシュ (\) またはフォワードスラッシュ (/) を使用し、Cert: ドライブのレベルを示します。

set-location -path LocalMachine\Root

Cert: ドライブにいない場合、ドライブ名でパスを始めます。

Cert:ドライブのコンテンツを表示する

-------------------------- 例 1 --------------------------

このコマンドは Get-Childitem コマンドレットを使用し、CurrentUser 証明書ストアの場所の証明書ストアを表示します。

get-childitem -path cert:\CurrentUser

Cert: ドライブにいる場合、ドライブ名を省略できます。

-------------------------- 例 2 --------------------------

このコマンドは Get-Childitem コマンドレットを使用し、My 証明書ストアの場所の証明書を表示します。

get-childitem -path cert:\CurrentUser\My

Cert: ドライブにいる場合、ドライブ名を省略できます。

-------------------------- 例 3 --------------------------

このコマンドは Get-Item コマンドレットを使用して「My」証明書ストアを取得し、Format-List の Property パラメーターとワイルドカード文字 (*) を使用してストアのすべてのプロパティを表示します。

get-item -path cert:\CurrentUser\My | format-list *

-------------------------- 例 4 --------------------------

このコマンドを実行すると、証明書が取得され、そのすべてのプロパティが表示されます。このコマンドは Get-ChildItem コマンドレットを使用して証明書を取得し、Format-List の Property パラメーターとワイルドカード文字 (*) を使用して証明書のすべてのプロパティを表示します。

証明書は拇印により識別されます。

get-childitem -path cert:\LocalMachine\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B | format-list -property *

-------------------------- 例 5 --------------------------

このコマンドを実行すると、LocalMachine 証明書ストアの場所にあるすべての証明書の Web ホスティング プロパティが表示されます。

このコマンドは Get-ChildItem コマンドレットの Recurse パラメーターを使用し、LocalMachine ストアの場所にあるすべてのストアのすべての証明書を取得します。パイプライン演算子が証明書を Format-Table コマンドに送ります。このコマンドがテーブルにある各証明書の選択されたプロパティを表示します。

Get-ChildItem -Path cert:\LocalMachine -Recurse | Format-Table -Property DnsNameList, EnhancedKeyUsageList, NotAfter, SendAsTrustedIssuer

証明書 MMC スナップインを開く

-------------------------- 例 1 --------------------------

このコマンドを実行すると、証明書 MMC スナップインが開きます。特定の証明書を管理できます。

invoke-item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B

選択した証明書を取得する

-------------------------- 例 1 --------------------------

このコマンドは Get-ChildItem コマンドレットの CodeSigningCert パラメーターと Recurse パラメーターを使用し、コンピューター上にあり、コード署名権限のあるすべての証明書を取得します。

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

-------------------------- 例 2 --------------------------

このコマンドは Get-ChildItem コマンドレットの DNSName パラメーターを使用し、WebHosting ストアにあり、ドメイン名に「Fabrikam」が含まれるすべての証明書を取得します。

Get-ChildItem -Path cert:\LocalMachine\WebHosting -DNSName "*fabrikam*"

-------------------------- 例 3 --------------------------

このコマンドは Get-ChildItem コマンドレットの ExpiringInDays パラメーターを使用し、次の 30 日以内に失効する証明書を取得します。

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

-------------------------- 例 4 --------------------------

このコマンドは Invoke-Command コマンドレットを使用し、Srv01 コンピューターと Srv02 コンピューターで Get-ChildItem コマンドを実行します。ExpiringInDays パラメーターに値としてゼロ (0) を指定すると、Srv01 コンピューターと Srv02 コンピューターにあり、失効している証明書が取得されます。

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

-------------------------- 例 5 --------------------------

このコマンドは Get-ChildItem コマンドレットの SSLServerAuthentication パラメーターを使用し、

My ストアと WebHosting ストアにあるすべてのサーバー SSL 証明書を取得します。

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

-------------------------- 例 6 --------------------------

このコマンドは、LocalMachine ストアの場所にあり、DNS 名前に「fabrikam」があり、EKU に「Client Authentication」があり、SendAsTrustedIssuer プロパティの値が「$true」であり、今後 30 日間で失効しないすべての証明書を取得します。

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

NotAfter プロパティに証明書有効期限が保存されます。

証明書の移動

-------------------------- 例 1 --------------------------

このコマンドは Move-Item コマンドレットを使用し、My ストアから WebHosting ストアに証明書を移動します。

Move-Item では証明書ストアは移動しません。証明書が別のストアの場所に移動することはなく、たとえば、LocalMachine から CurrentUser に証明書が移動することはありません。また、Move-Item では証明書が移動するが、秘密キーは移動しません。

Move-Item -Path cert:\LocalMachine\My\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0 -Destination cert:\LocalMachine\WebHosting

-------------------------- 例 2 --------------------------

このコマンドは Get-ChildItem コマンドレットの SSLServerAuthentication パラメーターを使用し、My 証明書ストアの SSL サーバー認証証明書を取得します。

このコマンドはパイプライン演算子を使用して Move-Item コマンドレットに証明書を送ります。このコマンドレットにより証明書が WebHosting ストアに移動します。

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

証明書と秘密キーを削除する

-------------------------- 例 1 --------------------------

このコマンドは CA 証明書ストアから証明書を削除するが、関連付けられている秘密キーはそのまま残ります。

Cert: ドライブでは、Remove-Item コマンドレットは DeleteKey、Path、WhatIf、Confirm パラメーターのみをサポートします。その他のパラメーターはすべて無視されます。

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

-------------------------- 例 2 --------------------------

この一連のコマンドは委任を有効化し、リモート コンピューターにある証明書と関連秘密キーを削除します。リモート コンピューターの秘密キーを削除するには、委任された資格情報を利用する必要があります。

最初のコマンドは Enable-WSManCredSSP コマンドレットを使用し、S1 リモート コンピューターのクライアントで Credential Security Service Provider (CredSSP) 認証を有効にします。CredSSP は委任認証を許可します。

2 番目のコマンドは Connect-WSMan コマンドレットを使用し、S1 コンピューターをローカル コンピューターの WinRM サービスに接続します。このコマンドが完了すると、S1 コンピューターが Windows PowerShell のローカル WSMan: ドライブに表示されます。

3 番目のコマンドは WSMan: ドライブの Set-Item コマンドレットを使用し、WinRM サービスの CredSSP 属性を有効にします。

4 番目のコマンドは New-PSSession コマンドレットを使用し、S1 コンピューターで CredSSP 認証によるリモート セッションを監視します。セッションは $s 変数に保存されます。

5 番目のコマンドは Invoke-Command コマンドレットを使用し、$s 変数のセッションで Remove-Item コマンドを実行します。Remove-Item コマンドは DeleteKey パラメーターを使用し、秘密キーと指定の証明書を削除します。

PS C:\>Enable-WSManCredSSP -Role Client -DelegateComputer S1 

PS C:\>Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

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

PS C:\> $s  = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01

PS C:\> Invoke-Command -Session $s { Remove-Item cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 -DeleteKey  }

-------------------------- 例 3 --------------------------

このコマンドは Get-ChildItem コマンドレットの ExpiringInDays パラメーターを使用し、値に 0 を指定し、WebHosting ストアにあり、失効している証明書を取得します。

このコマンドはパイプライン演算子を使用して Remove-Item コマンドレットに証明書を渡します。このコマンドレットが証明書を削除します。このコマンドは DeleteKey パラメーターを使用し、秘密キーと証明書を削除します。

Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 0 | Remove-Item -DeleteKey

-------------------------- 例 4 --------------------------

このコマンドは、DNS 名に「Fabrikam」が含まれるすべての証明書を削除します。

このコマンドは Get-ChildItem コマンドレットの DNSName パラメーターを使用して証明書を取得し、Remove-Item コマンドレットを使用して証明書を削除します。

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

証明書ストアの作成

-------------------------- 例 1 --------------------------

このコマンドは LocalMachine ストアの場所で「CustomStore」という名前の新しい証明書ストアを作成します。

Cert: ドライブで、New-Item コマンドレットは LocalMachine ストアの場所で証明書ストアを作成します。Name、Path、WhatIf、Confirm パラメーターがサポートされます。その他のパラメーターはすべて無視されます。

New-Item -Path cert:\LocalMachine\CustomStore

このコマンドは新しい証明書ストアを表す System.Security.Cryptography.X509Certificates.X509Store を返します。

-------------------------- 例 2 --------------------------

このコマンドは Server01 コンピューターの LocalMachine ストアの場所で「HostingStore」という名前の新しい証明書ストアを作成します。

このコマンドは Invoke-Command コマンドレットを使用し、Server01 コンピューターで New-Item コマンドを実行します。

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

このコマンドは新しい証明書ストアを表す System.Security.Cryptography.X509Certificates.X509Store を返します。

証明書ストアの削除

-------------------------- 例 1 --------------------------

このコマンドは Remove-Item コマンドレットを使用し、Test1 証明書ストアを削除します。このコマンドは Recurse パラメーターを使用し、Test1 ストアの証明書を削除します。

Cert: ドライブで、Remove-Item コマンドレットは LocalMachine ストアの場所からユーザーが作成した証明書ストアを削除します。Remove-Item コマンドレットを使用して Windows システム証明書ストアを削除することはできません。

Cert: ドライブでは、Remove-Item コマンドレットは Path、WhatIf、Confirm パラメーターのみをサポートします。その他のパラメーターはすべて無視されます。

Remove-Item -Path cert:\LocalMachine\TestStore -Recurse

証明書ストアに証明書が含まれるときに Recurse パラメーターを省略した場合、Remove-Item は項目を削除する前に確認を求めます。

-------------------------- 例 2 --------------------------

このコマンドは Invoke-Command コマンドレットを使用し、S1 コンピューターと S2 コンピューターで Remove-Item コマンドを実行します。Remove-Item コマンドには Recurse パラメーターが含まれます。このパラメーターはストアを削除する前にストアの証明書を削除します。

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

-------------------------- 例 3 --------------------------

このコマンドは、LocalMachine ストアの場所にあり、名前に「Test」が含まれるすべての証明書ストアを削除します。

Remove-Item -path cert:\LocalMachine\*test* -Recurse

動的パラメーター

動的パラメーターとは、Windows PowerShell プロバイダーによって追加されるコマンドレット パラメーターであり、プロバイダーに対応したドライブでコマンドレットが使用されている場合のみ利用できます。

CodeSigningCert <System.Management.Automation.SwitchParameter>

コード署名権限がある証明書のみを取得します。

このパラメーターは、EnhancedKeyUsageList プロパティ値に「Code Signing」が含まれる証明書を取得します。

空の EnhancedKeyUsageList が含まれる証明書はあらゆる目的で使用できるため、コード署名証明書を検索すると、空の EnhancedKeyUsageList プロパティ値が含まれる証明書も返されます。

このパラメーターは証明書プロバイダーのすべてのサブディレクトリで有効であるが、証明書のみを操作します。

サポートされているコマンドレット:

DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>

証明書の DNSNameList プロパティに指定したドメイン名またはドメイン名パターンが含まれる証明書を取得します。

このパラメーターの値は Unicode または ASCII になります。Punycode 値は Unicode に変換されます。ワイルドカード文字 (*) が許可されます。

このパラメーターは証明書プロバイダーのすべてのサブディレクトリで有効であるが、証明書のみを操作します。

このパラメーターは Windows PowerShell 3.0 で導入されました。

サポートされているコマンドレット:

EKU <System.String>

証明書の EnhancedKeyUsageList プロパティに指定したテキストまたはテキスト パターンが含まれる証明書を取得します。ワイルドカード文字 (*) が許可されます。EnhancedKeyUsageList プロパティには EKU のフレンドリ名と OID フィールドが含まれます。

空の EnhancedKeyUsageList が含まれる証明書はあらゆる目的で使用できるため、あらゆる EKU 検索で空の EnhancedKeyUsageList プロパティ値が含まれる証明書が返されます。

このパラメーターは証明書プロバイダーのすべてのサブディレクトリで有効であるが、証明書のみを操作します。

このパラメーターは Windows PowerShell 3.0 で導入されました。

サポートされているコマンドレット:

ExpiringInDays <System.Int32>

指定した日数以内に失効する証明書を取得します。整数を入力します。値に 0 (zero) を指定した場合、失効している証明書が取得されます。

このパラメーターは証明書プロバイダーのすべてのサブディレクトリで有効であるが、証明書のみを操作します。

このパラメーターは Windows PowerShell 3.0 で導入されました。

サポートされているコマンドレット:

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

SSL Web ホスティングのサーバー証明書のみを取得します。このパラメーターは、EnhancedKeyUsageList プロパティ値に「Server Authentication」が含まれる証明書を取得します。

空の EnhancedKeyUsageList が含まれる証明書はあらゆる目的で使用できるため、SSLServerAuthentication 検索では空の EnhancedKeyUsageList プロパティ値が含まれる証明書も返されます。

このパラメーターは証明書プロバイダーのすべてのサブディレクトリで有効であるが、証明書のみを操作します。

このパラメーターは Windows PowerShell 3.0 で導入されました。

サポートされているコマンドレット:

DeleteKey <System.Management.Automation.SwitchParameter>

証明書を削除するとき、関連付けられている秘密キーを削除します。

リモート コンピューターの Cert:\CurrentUser ストアでユーザー証明書に関連付けられている秘密キーを削除するには、委任資格情報を使用する必要があります。Invoke-Command コマンドレットを使用して Remove-Item コマンドをリモート実行するときは、セキュリティ リスクを考慮した上で、CredSSP パラメーターを利用して委任を有効にします。

このパラメーターは証明書プロバイダーのすべてのサブディレクトリで有効であるが、証明書のみを操作します。

このパラメーターは Windows PowerShell 3.0 で導入されました。

サポートされているコマンドレット:

See Also

Concepts

about_Providers
about_Signing

Other Resources

Get-AuthenticodeSignature
Set-AuthenticodeSignature
Get-PfxCertificate