デジタル証明書は自分で発行を行うことが可能です。
PowerShellでデジタル証明書を作成し、任意のファイルにデジタル署名を行う方法について説明します。
PowerShellには証明書ドライブ(cert:)があるのでこれを利用します。
証明書の取得は下記のようにして行います。
$cert = Get-ChildItem cert:\CurrentUser\My 窶鼎odeSign |
?{$_.Subject 窶杜atch “PowerShellUser}
これで証明書は$cert変数へ代入されます。
次に、任意のファイルにデジタル署名を行うわけですが、これにはSet-AuthenticodeSignature コマンドレットを使用します。
Set-AuthenticodeSignature 窶擢ilePath “デジタル署名を行うファイル” 窶田ert $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からの転記ミスでした。失礼しました。
参考文献:
コメント
いろんなことができるようになったPowerShellにはとても関心を寄せています.
このやり方だと確かに,毎回証明書を取得する必要がなくて便利ですね.
試してみて気づいたのですが,投稿された内容そのままだとエラーが発生します.
揚げ足取りみたいになってしまって恐縮なのですが,気づいた点を.
* functionがfu"cn"tionになっている
* 型指定している箇所の最後の"]"がいらないのではないか
* 証明書を適用する箇所はFilePathではなく"-filepath"ではないか