ADCSの証明書Revokeスクリプト

09.06

現在の現場では ActiveDirectory の機能の一つである証明書発行の機能を使って、証明書を作成、その後GPOを使って自動登録をかけています。

これによってVPNなどの通信で使う証明書を各クライアントに配布しているのですが、社員が辞めてしまった後も、ActiveDirectory のオブジェクト削除待機期間中は証明書が有効になってしまっているためセキュリティリスクを抱えておりました。

そのため、作成したのが自動的に証明書を無効化するスクリプトになります。

最初のコマンドはBATでしか用意されていないので、実行してCSVで出力。

その後、必要な部分だけを取り出して、証明書を無効化という流れになります。

BATでしかコマンドが用意されていない場合は現在も多いので、テキストから必要な部分だけを取り出して・・という作業は意外に多くの場面で使います。

# 最初にCert情報を出力させて、それをインポートしたのち、必要な項目だけに絞っておく。

CertUtil -view csv >> $env:UserProfile\desktop\cert.csv

$x = Import-Csv $env:UserProfile\desktop\cert.csv

Remove-Item $env:UserProfile\desktop\cert.csv

# $data=必要なcert情報が入っている変数

$data = $x | select “Certificate Template”,”Requester Name”,”Serial Number”,”Request Disposition”

# 無効化されていて、かつ最終更新日が7日前より新しいユーザーのみを抽出する。(初回に全体で抽出して必要なユーザーはrevoke済みのため)

$Date = (Get-Date).AddDays(-7)

$user = Get-ADUser -Filter { Enabled -eq $false} -Properties whenChanged | ? {$_.whenChanged -ge $date}

$user | % {

$name = $null

$name = “ドメイン名\” + $_.SamAccountName

# $targetの中に該当するユーザーの情報だけを入れる。

$data | % {

if(($_.”Requester Name” -eq $name) -and ($_.”Request Disposition” -eq “20 — Issued”) -and ($_.”Certificate Template” -eq “テンプレート名”))

{

certutil -revoke $_.”Serial Number” 0x5

$note = $_.”Requester Name” + “`t” + $_.”Serial Number” + “`t” + “We have invalidated this user’s certificate.”

$note | Out-file $env:UserProfile\Desktop\cert_Log.csv -Append

$note = $null

}

}

}

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2018年12月
« 11月    
 12
3456789
10111213141516
17181920212223
24252627282930
31  
ページ上部へ戻る