🐷
PowerShell スクリプトに自己証明書で署名を付与する
PowerShell スクリプトに自己署名を付与する
署名付与スクリプト例
SelfSign.ps1
# 管理者権限付きのコマンドプロンプトで下記を実行すればいい
# 例> powershell .\SelfSign.ps1 .\Target.ps1
$MyPs1 = $Args[0];
# ファイルのフルパスを取得する
$ScriptFileFullPath = Get-Command $MyPs1 | select $_.FullName
# 自己証明書を用意する
$Cert = New-SelfSignedCertificate `
-Subject "CN=PowerShell Script by myself, OU=Self-signed RootCA" `
-KeyAlgorithm RSA `
-KeyLength 4096 `
-Type CodeSigningCert `
-CertStoreLocation Cert:\CurrentUser\My\ `
-NotAfter ([datetime]"2099/01/01")
# 作成した自己証明書をルートに移動する
Move-Item "Cert:\CurrentUser\My\$($Cert.Thumbprint)" Cert:\CurrentUser\Root
# ルート証明書として自己署名する
$RootCert = @(Get-ChildItem cert:\CurrentUser\Root -CodeSigningCert)[0]
Set-AuthenticodeSignature $ScriptFileFullPath.Source $RootCert
署名方法
署名対象のスクリプトを Target.ps1 だとします。
- 管理者権限付きのコマンドプロンプトを開く。
-
powershell .\SelfSign.ps1 .\Target.ps1
のように実行する。
Discussion