概要 †
実行ファイルにテスト目的のコードサイニング証明書を書き込みます。
事前準備 †
- Windows SDK(makecert, cert2spc, pvk2pfx, signtool)がなければ入れる
- ルート証明書作成
1
2
3
4
5
6
7
8
9
10
11
| -
!
-
|
|
|
!
-
!
| cd C:\Program Files\Windows Kits\10\bin\x86
makecert -a <署名アルゴリズム(md5,sha1,sha256,sha384,sha512)> -e <有効期間終了日(MM/DD/YYYY)> -cy <証明書の種類(end:エンドエンティティ,authority:証明機関)> -r -n <証明書名(CN:発行元, O:組織名, C:国名, E:メールアドレス)> -sv <プライベートキー出力先> <ルート証明書出力先>
makecert -a sha512 -e 12/31/2099 -cy authority -r -n "CN=testRootCA,O=testRootCA,C=JP,[email protected]" -sv D:\test_rootca.pvk D:\test_rootca.cer
|
- ルート証明書のインストール
- D:\test_rootca.cerをダブルクリック
信頼されたルート証明機関として登録
(本来)CAの作業 †
- デジタル署名作成
1
2
3
4
5
6
| -
|
!
-
!
| makecert -a <署名アルゴリズム(md5,sha1,sha256,sha384,sha512)> -e <有効期間終了日(MM/DD/YYYY)> -cy <証明書の種類(end:エンドエンティティ,authority:証明機関)> -r -n <証明書名(CN:発行元, O:組織名, C:国名, E:メールアドレス)> -ic <ルート証明書パス> -iv <ルート証明書のプライベートキーパス> -sv <プライベートキー出力先> <デジタル署名出力先>
makecert -a sha512 -e 12/31/2099 -cy end -n "CN=testInc,O=testInc,C=JP,[email protected]" -ic D:\test_rootca.cer -iv D:\test_rootca.pvk -sv D:\test.pvk D:\test.cer
|
開発者の作業 †
- ソフトウェア発行元証明書(.spc)作成
1
2
3
4
|
-
!
| cert2spc <デジタル署名パス> <ルート証明書パス> <ソフトウェア発行元証明書出力先>
cert2spc D:\test.cer D:\test_rootca.cer D:\test.spc
|
- コードサイニング証明書(.pfx)作成
1
2
3
4
5
6
| -
|
!
-
!
| pvk2pfx -pvk <デジタル署名のプライベートキーパス> -spc <ソフトウェア発行元証明書パス> -po <パスワード> -pfx <コードサイニング証明書出力先> -f
pvk2pfx -pvk D:\test.pvk -spc D:\test.spc -po testpass -pfx D:\test.pfx -f
|
- 実行ファイルにコードサイニング証明書(.pfx)を書き込み
1
2
3
4
|
-
!
| signtool sign -f <コードサイニング証明書パス> -p <パスワード> <実行ファイルパス>
signtool sign -f D:\test.pfx -p testpass D:\test.exe
|
- 実行ファイルのプロパティ-[デジタル署名]-[詳細]
正常時
バイナリ改竄後
検証時の環境 †
- Windows 7 Professional SP1 x86