2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellでcer形式の自己署名証明書を作成し、ps1ファイルに署名する方法

Last updated at Posted at 2024-01-26

PowerShellでpfx形式ではなくcer形式の自己署名証明書を作成し、ps1ファイルに署名する方法を説明します。

1. 自己署名証明書を作成する

自己署名証明書を作成するには、New-SelfSignedCertificateコマンドを使用します。

# 自己署名証明書を作成する
New-SelfSignedCertificate -CertStoreLocation "Cert:\LocalMachine\My" -Subject "CN=My Code Signing Certificate" -KeyExportPolicy Exportable -FriendlyName "My Code Signing Certificate" -Type CodeSigning -NotAfter ([DateTime]::Today.AddDays(30))

このコマンドは、C:\path\to\cert\code.cerというファイル名で、cer形式の自己署名証明書を作成します。

2. 署名用証明書のパスを確認する

署名用証明書のパスを確認するには、Get-ChildItemコマンドを使用します。

# 署名用証明書のパスを確認する
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*Code Signing*"} | Select-Object -First 1

このコマンドは、署名用証明書のパスの一覧を表示します。

3. 署名するps1ファイルを指定する

署名するps1ファイルを指定するには、$ps1File変数にファイルのパスを指定します。

$ps1File = "C:\path\to\ps1\file.ps1"

4. 署名を行う

署名を行うには、Set-AuthenticodeSignatureコマンドを使用します。

# 署名を行う
Set-AuthenticodeSignature -Path $ps1File -Cert $certPath

このコマンドは、$ps1File変数で指定されたファイルに、$certPath変数で指定された証明書を使用して署名します。

具体的なコードは、以下のとおりです。

# 自己署名証明書を作成する
New-SelfSignedCertificate -CertStoreLocation "Cert:\LocalMachine\My" -Subject "CN=My Code Signing Certificate" -KeyExportPolicy Exportable -FriendlyName "My Code Signing Certificate" -Type CodeSigning -NotAfter ([DateTime]::Today.AddDays(30))

# 署名用証明書のパスを確認する
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*Code Signing*"} | Select-Object -First 1

# 署名するps1ファイルを指定する
$ps1File = "C:\path\to\ps1\file.ps1"

# 署名を行う
Set-AuthenticodeSignature -Path $ps1File -Cert $certPath

このコードを実行すると、C:\path\to\ps1\file.ps1というps1ファイルに、C:\path\to\cert\code.cerという自己署名証明書を使用して署名されます。

注意点

  • 自己署名証明書は、信頼できる認証局 (CA) によって発行された証明書ではないため、署名されたファイルは、信頼されていない可能性があることに注意してください。
  • 署名されたファイルは、署名の有効期限が切れると、実行できなくなる可能性があることに注意してください。

補足

  • New-SelfSignedCertificateコマンドで、-Type CodeSigningオプションを指定すると、cer形式の自己署名証明書が作成されます。
  • Set-AuthenticodeSignatureコマンドで、-Certパラメーターに、-Type CodeSigningオプションを指定して作成された証明書を指定すると、cer形式の証明書を使用して署名されます。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?