1. ホーム

[解決済み】Windowsでコードサイニング用の自己署名証明書を作成する方法を教えてください。

2022-04-16 06:56:39

質問

Windows SDK のツールを使用してコード署名用の自己署名証明書を作成するにはどうすればよいですか?

解決方法を教えてください。

回答を更新しました

以下のWindowsバージョン以降を使用している場合。Windows Server 2012、Windows Server 2012 R2、またはWindows 8.1を使用している場合。 MakeCertは現在非推奨です。 を使用することをお勧めします。 PowerShellコマンドレット 新しい自己署名証明書 .

Windows 7 などの古いバージョンを使用している場合は、MakeCert または他のソリューションにこだわる必要があります。一部の人 提案する その 公開鍵基盤Powershell(PSPKI)モジュール .

オリジナル回答

自己署名入りコードサイニング証明書(SPC -)を作成することができますが、この証明書を使用することで、自己署名入りコードサイニング証明書を作成することができます。 ソフトウェアパブリッシャー証明書 )を一度に行うことができますが、私は次のようにするのが好ましいと思います。

自己署名入り認証局(CA)の作成

makecert -r -pe -n "CN=My CA" -ss CA -sr CurrentUser ^
         -a sha256 -cy authority -sky signature -sv MyCA.pvk MyCA.cer

(^ = バッチコマンドラインによる行の折り返しを許可する)

これは、エクスポート可能な秘密鍵 (-pe) を持つ、自己署名 (-r) 証明書を作成します。これは"My CA"という名前で、現在のユーザのCAストアに置かれるはずです。私たちは SHA-256 アルゴリズムを使用しています。鍵は署名(-sky)用です。

秘密鍵は MyCA.pvk ファイルに、証明書は MyCA.cer ファイルに保存する必要があります。

CA証明書のインポート

CA証明書は信頼できなければ意味がないので、Windowsの証明書ストアにインポートする必要があります。あなたは できる は、Certificates MMC snapin を使用しますが、コマンドラインから行います。

certutil -user -addstore Root MyCA.cer

コードサイニング証明書(SPC)の作成

makecert -pe -n "CN=My SPC" -a sha256 -cy end ^
         -sky signature ^
         -ic MyCA.cer -iv MyCA.pvk ^
         -sv MySPC.pvk MySPC.cer

上記とほぼ同じですが、発行者の鍵と証明書を提供します(-icと-ivスイッチ)。

また、証明書と鍵をPFXファイルに変換したいと思います。

pvk2pfx -pvk MySPC.pvk -spc MySPC.cer -pfx MySPC.pfx

パスワードを使用する場合は、以下を使用してください。

pvk2pfx -pvk MySPC.pvk -spc MySPC.cer -pfx MySPC.pfx -po fess

PFX ファイルを保護したい場合は、-po スイッチを追加してください。そうしないと、PVK2PFX はパスフレーズのない PFX ファイルを作成します。

コード署名に証明書を使用する

signtool sign /v /f MySPC.pfx ^
              /t http://timestamp.url MyExecutable.exe

( タイムスタンプが重要な理由はこちら )

PFXファイルを証明書ストアにインポートすると(PVKIMPRTまたはMMCスナップインを使用できます)、次のようにコードに署名することができます。

signtool sign /v /n "Me" /s SPC ^
              /t http://timestamp.url MyExecutable.exe

のタイムスタンプURLの候補をいくつか挙げておきます。 signtool /t があります。

  • http://timestamp.verisign.com/scripts/timstamp.dll
  • http://timestamp.globalsign.com/scripts/timstamp.dll
  • http://timestamp.comodoca.com/authenticode
  • http://timestamp.digicert.com

マイクロソフトの完全なドキュメント

ダウンロード

.NET開発者でない方は、Windows SDKと.NETフレームワークが必要です。現在のリンクはこちらです。[SDK & .NET][5] (makecert を `C:\Program FilesMicrosoft SDKs³³Windows³³v7.1` にインストールする). あなたのマイルームが変わるかもしれません。

MakeCertは、Visual Studioのコマンドプロンプトから利用できます。Visual Studio 2015にも搭載されており、Windows 7のスタートメニューから "Developer Command Prompt for VS 2015" または "VS2015 x64 Native Tools Command Prompt" (おそらくすべて同じフォルダにあります)で起動することが可能です。