2017-01-04 1 views
2

"c:\ path \ MyCert.crt"などのドライブ上の特定のパスからの特定の証明書が取得しようとしています。インストールされていて、アクティブである場合。特定の証明書ファイル.crtまたは.cerなどがインストールされており、アクティブである場合

私は、次のしている:

表示
$crt = New-Object System.Security.Cryptography.X509Certificates.X509Certificate; 
$crt.Import("c:\path\MyCert.crt"); 
write-host "MyCert.crt expires after: " $crt.GetExpirationDateString(); 
$crt.GetName(); 

をMyCert.crtの有効期限が切れた後に:2021年11月12日2時12分31秒AM C = ...、O =」 ... "OU = ...、OU =" ... "、CN = ...

が試み:

[bool](dir cert:\LocalMachine\ | ? { $_.subject -like "cn=MyCert" }) 

が、これがあれば私に語ったかどうかわからないがそれはインストールされ、アクティブですか?

助けてもらえますか?

+1

私はあなたが[証明書の拇印](http://security.stackexchange.comを比較するべきだと思います/ a/35694)、同じ名前の別の証明書ではなく、同じ証明書*であるかどうかをチェックします。あなたは「アクティブ」とは何を意味しますか?私は、証明書をインストールできるが、非アクティブであることに気づいていません。 – TessellatingHeckler

+0

ありがとうTessellatingHeckler。ファイルから拇印をどのように取得し、cert:\ LocalHost \と比較するかを試してみます。アクティブでは、私はちょうど証明書が有効になっているかどうかを見たいと思っていたかもしれませんが、別の証明書を使用したい場合は、インストール時に証明書を無効または無効にする方法があるかもしれないと考えました。私はテスト目的のために推測する。今は、証明書がインストールされているときは、アクティブであることを知っていただきありがとうございます。 –

答えて

1

@TessellatingHecklerと同様に、の特定の証明書がインストールされているかどうかを知るために、拇印を比較する必要があります。それ以外の場合は、証明書が更新された場合や、証明書の変更があった場合でも、真の価値を得ることになります。

もう1つの問題は、既定でGet-ChildItem(エイリアスDIR)がパスを再帰的に検索しないため、証明書が内部にあるフォルダが表示されるだけですX509Certificateに 『オブジェクトあなたの拇印を表示しません:「あなたの例で得たVEの

[1] PS C:\> dir cert:\LocalMachine\ 


Name : TrustedPublisher 

Name : ClientAuthIssuer 

Name : Remote Desktop 

Name : Root 

Name : TrustedDevices 

Name : CA 

... 

あなたはとCRTファイルをインポートすることもわかります』。ここには2つのオプションがあります。Get-PfxCertificateを使用してファイルを調べてください(これがいつ導入されたのか分かりませんので、利用可能かどうかわかりません)。あるいは、 'X509Certificate2'オブジェクト。

スニペットに別名をアウト拡大のための私を許しますが、以下は、トリックを行います:

$crt = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 
$crt.Import('c:\certs\CertFile.crt'); 

[bool](Get-ChildItem cert:\LocalMachine\ -Recurse | Where { $_.Thumbprint -eq $crt.Thumbprint }) 
+1

Windosに感謝します。あなたのアイデアを得るために周りにグーグルではありましたが、あなたのアプローチはうまくいくでしょこれをより包括的かつparamatizedにする。 –

関連する問題