HI,早上好,cantgis又和大家見面了。
今天我們聊聊關于證書這塊的事情,我們使用了很多網站驗證證書,其中 銀行、娛樂網站等等,他們每年都會到期一次。
在Internet Explorer中的證書清單,過期的證書的集合,不規則的存在着,我們如何查詢獲得和處理呢?下面cantgis 帶給大家這套解決方案。
想要獲得和找到這些證書,我們要使用x.509證書提供商(Microsoft.PowerShell.Security\Certificate)
1
<code>$myCerts</code> <code>= </code><code>Get-Item</code> <code>Cert:\CurrentUser\My</code>
預設情況下這個store是隻讀的,我們不要打開它,當然也不能删除掉。
成員名稱
說明
IncludeArchived
打開 X.509 證書存儲區并添加存檔證書。
MaxAllowed
以允許最進階通路的方式打開 X.509 證書存儲區。
OpenExistingOnly
ReadOnly
以隻讀方式打開 X.509 證書存儲區。
ReadWrite
以讀寫方式打開 X.509 證書存儲區。
OK 我們使用
<code>$myCerts</code><code>.Open(</code><code>[System.Security.Cryptography.X509Certificates.OpenFlags]</code><code>::ReadWrite)</code>
通過下面的cmdlet過濾那些在昨天就過期的證書,$mycerts 已經指向的路徑,我們可以拿它來做一個參考,并不是讓大家去重複的編碼形成無用的字元串。
2
<code>$today</code> <code>= </code><code>Get-Date</code>
<code>$ExpiredList</code> <code>= </code><code>Get-ChildItem</code> <code>$myCerts</code><code>.PSPath | </code><code>Where-Object</code> <code>{ </code><code>$_</code><code>.NotAfter </code><code>-lt</code> <code>$today</code> <code>}</code>
我們不想每次都調用管道:where-object 的cmdlet指令,因為我們不需要這樣
删除麼個證書的x.509證書存儲區,然後我們執行查詢
3
4
5
<code>ForEach</code> <code>(</code><code>$Cert</code> <code>in</code> <code>$ExpiredList</code><code>) {</code>
<code> </code><code>$myCerts</code><code>.Remove(</code><code>$Cert</code><code>)</code>
<code>}</code>
<code> </code>
<code>$myCerts</code><code>.Close() </code><code># We opened it, so we need to close it.</code>
在powershell 3.0 中我們可以整合在一起來執行
6
7
8
9
10
<code>Get-ChildItem</code> <code>Cert:\CurrentUser\My |</code>
<code>Where-Object</code> <code>NotAfter </code><code>-lt</code> <code>$today</code> <code>|</code>
<code>Remove-Item</code>
<code> </code>
<code>#或者</code>
<code>ForEach-Object</code> <code>-begin</code> <code>{ </code><code>$now</code> <code>= </code><code>get-date</code> <code>}</code> <code>-process</code> <code>{ </code><code>if</code> <code>(</code><code>$PSItem</code><code>.NotAfter </code><code>-lt</code> <code>$now</code> <code>)</code>
本文轉自cantgis 51CTO部落格,原文連結:http://blog.51cto.com/cantgis/1228707,如需轉載請自行聯系原作者