自作ソフト「exe」への自己署名 VisualBasic


自作ソフトにおけるexeソフト自己署名 Signtool.exe

VBやVCで作った自作ソフトはClickOnceなど使わないと無署名ソフトとなります。
そうするとセキュリティソフトがあやしいソフトとしてヒューリスティックエンジン(ウイルスとして類推するエンジン)が反応することがあります。
しかし自作ソフトですのでウイルスを作っていない限り誤判定としかいえません。
通常の市販ソフトなどはデジタル署名する為年間単位でEVコード証明書が発行できるComodoなどと契約しデジタル署名をしています。
ですがフリーソフトなどの場合はお金を払ってまでコードサイニングは難しいとおもいます。
そこで俗にいう自己署名をしてみようともいます。これは作者自身がEVコード証明書を発行しソフト作者がデジタル署名をすることです。
酷いヒューリスティックエンジンではアイコンを追加しただけで誤判定などがありましたので無署名ソフトには非常に厳しい判定をするようです。
当時、デジタル署名で回避できましたので今回はデジタル自己署名の方法をお伝えしようと思います。

必要なソフト

Windows SDK and emulator archive

Windows 8.1のSDKをダウンロードしてください

Windows10のsdkには使いたいソフトが入っていないようです。

上記ソフトをインストール

画像のチェックだけで今回はokです。

SDK8.1

Cフォルダ直下にsignフォルダをつくります。

コマンドプロンプトにて

  1. cd C:\Program Files (x86)\Windows Kits\8.1\bin\x64
  2. makecert -a sha512 -e 12/31/2099 -cy authority -r -n "CN=組織名,O=組織名,C=JP,E=foo@bar.co.jp" -sv C:\sign\mysoft_rootca.pvk C:\sign\mysoft_rootca.cer

passwordを記入します。

signフォルダのmysoft_rootca.cerをクリックし信頼された期間にインストールします

  1. makecert -a sha512 -e 12/31/2099 -cy end -n "CN=組織名,O=組織名,C=JP,E=hoge@huga.co.jp" -ic C:\sign\mysoft_rootca.cer -iv C:\sign\mysoft_rootca.pvk -sv C:\sign\mysoft.pvk C:\sign\mysoft.cer

passwordを記入します。

  1. cert2spc C:\sign\mysoft.cer C:\sign\mysoft_rootca.cer C:\sign\mysoft.spc

passwordを記入します。

  1. pvk2pfx -pvk C:\sign\mysoft.pvk -spc C:\sign\mysoft.spc -po パスワード -pfx C:\sign\mysoft.pfx -f

コードサイニングしたいEXEファイルをSIGNフォルダに置きます。今回はbit.exe

  1. signtool sign -f C:\sign\mysoft.pfx -p パスワード C:\sign\bit.exe

※組織名、hoge@huga.co.jp、パスワードは適宜書き換えてください
signature

ということでコードサイニング完了しました。

プロパティのタイムスタンプが利用不可になっていましたが詳細を押していくと2099まで有効とでています。

この状態でウィルスチェックには引っかからないようになりました。次回へ続く

参考リンク Spcial thanks

paburica.com
logo