5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

自己証明書を作成して実行ファイルに署名する

Posted at

はじめに

自己証明書を作成して, 実行ファイルに署名してみました.
自己証明書の作成, 署名ともVisual Studioの開発用コマンドプロンプトを利用します.

1.png

自己証明書の作成

コマンドプロンプトより, 自己証明書を作成するフォルダーに移動します.
今回は, Cドライブ直下にtestフォルダーを作成し, ここに作成していきます.

1. .pvk と .cer の作成

makecertコマンドを使用して, .pvk と .cer を作成します.

makecert /a sha256 /n "CN=Sample,O=Sample,C=JP" /r /h 0 /eku "1.3.6.1.5.5.7.3.3" -b 01/01/2023 -e 12/31/2030 /sv Sample.pvk Sample.cer
  • オプションの説明
オプション 説明
/a ハッシュアルゴリズム
/n 証明書の名前
CN=Common Name
O=Organization Name
C=Country
/r 自己署名ルート証明書の作成
/h 0 証明書の基本的な制約
/eku 証明書の拡張キー
"1.3.6.1.5.5.7.3.3"=コード署名
"1.3.6.1.4.1.311.10.3.13"=ライフタイム署名
※コード署名, ライフタイム署名とするには, "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13"とカンマで続けて指定する
/b 証明書の有効期間の開始日 (mm/dd/yyyy形式)
/e 証明書の有効期間の終了日 (mm/dd/yyyy形式)
/sv pvkファイルの名前, cerファイルの名前

上記コマンドを実行すると, Create Private Key Passwordダイアログが表示されます.
ここに任意のパスワードを指定します. 今回は 1234 としました.
image.png

引き続き, Enter Private Key Passwordダイアログが表示されるので, 上記で指定したパスワードを入力します.
image.png

これでtestフォルダーにSample.pvkとSample.cerが作成されます.
image.png

2. .pfx の作成

pv2pfxコマンドを使用して, .pfx を作成します.

pvk2pfx /pvk Sample.pvk /pi 1234 /spc Sample.cer /pfx Sample.pfx /po 1234
  • オプションの説明
オプション 説明
/pvk pvkファイル指定
/pi pvkファイルのパスワード
/spc spcファイル指定
/pfx 出力するpfxファイル名
/po pfxファイルのパスワード

上記コマンドを実行すると, testフォルダーにSample.pfxが作成されます.
image.png

3. 実行ファイルの署名

signtoolコマンドを使用して, 実行ファイルに署名します.
今回は Sample.exe に署名してみます. testフォルダーにSample.exeをコピーしておきます.

signtool sign /fd sha256 /f Sample.pfx /p 1234 /t http://timestamp.digicert.com Sample.exe
  • オプションの説明
オプション 説明
/fd ファイル署名に使用するアルゴリズム
/f pfxファイル
/p pfxファイルのパスワード
/t タイムスタンプ
※この指定がないとタイムスタンプが入らない
(末尾) 署名するファイル

上記コマンドを実行すると, 署名ができます.
署名前後のSample.exeのプロパティを比べると, 署名後には[デジタル署名]のタブが追加されています.

2.png

4. ルート証明書の登録

デジタル署名の詳細を確認すると, 信頼していないルート証明書のため強制終了したということがわかります.
image.png

Sample.cerを信頼されたルート証明書として登録します.
Sample.cerをダブルクリックして, [証明書のインストール]をクリックします.
image.png

証明書のインポートウィザードが表示されるので, 指示に従って登録します.
image.png
[証明書をすべて次のストアに配置する]を選択し, [参照]をクリックします.
image.png

[信頼されたルート証明機関]を選択し, [OK]をクリックします.
image.png

あとは[完了]をクリックすると, 「正しくインポートされました。」というメッセージが表示されます.
image.png
image.png

ルート証明書として登録後, Sample.exeのデジタル署名の詳細を確認すると, デジタル署名の問題がなくなっています.
image.png

最後に

Visual Studioの開発用コマンドプロンプトを利用することで, 自己証明書を作成して, 署名することができます.

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?