デジタル証明書は自分で発行を行うことが可能です。
PowerShellでデジタル証明書を作成し、任意のファイルにデジタル署名を行う方法について説明します。
PowerShellには証明書ドライブ(cert:)があるのでこれを利用します。
証明書の取得は下記のようにして行います。
$cert = Get-ChildItem cert:\CurrentUser\My –CodeSign |
?{$_.Subject –match “PowerShellUser}
これで証明書は$cert変数へ代入されます。
次に、任意のファイルにデジタル署名を行うわけですが、これにはSet-AuthenticodeSignature コマンドレットを使用します。
Set-AuthenticodeSignature –FilePath “デジタル署名を行うファイル” –cert $cert
これだけで任意のファイルへデジタル署名を行うことができます。
しかし、毎回入力するのは面倒なので、下記のように関数にしてみました。ついでに、先日紹介したtry-catchも使ってみました。
function global:Set-Cert([string]$path)
{
try
{
$cert = dir cert:\CurrentUser\My -codesign |
? { $_.Subject -match "PowerShell User" }
Set-AuthenticodeSignature -FilePath $path -cert $cert
"デジタル署名に成功しました"
}
catch [Exception]
{
"デジタル署名に失敗しました"
}
}
使い方は
PS > Set-Cert "デジタル署名するファイルのパス"
です。是非おためしください。
追記:2009/04/15
dormouseさんからご指摘いただいた箇所を修正しました。まさにその通りでした。
もう一台のPCからの転記ミスでした。失礼しました。
参考文献: