2017年5月19日金曜日

[Windows] 幫自己的exe檔建立自己的數位簽章

這篇只做快速產生數位簽章的方法,其他原理跟理論和規則什麼都就不寫了。

所以這篇只會有幾個指令而已。

首先會需要一些工具。
這個簽證工具在 windows sdk 裡面。
所以先下載個 sdk 套件
Windows Software Development Kit (SDK) for Windows 8
https://dev.windows.com/en-us/downloads/windows-8-sdk

雖然他寫 for Windows 8
不過基本上 windows 8.1 10 也都適用
或是不放心一定要用 windows 10 SDK 也是可以
Windows 10 SDK
https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

然後就是製作數位簽章了
就只有3行指令

makecert -a sha1 -b 01/01/2003 -e 12/31/2099 -cy authority -eku 1.3.6.1.5.5.7.3.3 -sv myCA.pvk -r -n "CN=my_name, E=mail@domain.com" myCA.cer
cert2spc myCA.cer myCA.spc
pvk2pfx -pvk myCA.pvk -spc myCA.spc -po 1234 -pfx myCA.pfx -f

做好之後中間那些檔案都不重要了
只要有最後產生的 pfx 檔就可以進行簽證了

所以接著就是幫 exe 檔簽證
指令只有1個
但是因為 sha1 已經停了
所以還要再加簽一個 sha256
所以就變成了2行指令

signtool sign /f myCA.pfx /p 1234 /t http://timestamp.verisign.com/scripts/timstamp.dll /v "filename.exe"
signtool sign /fd sha256 /f myCA.pfx /p 1234 /as /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /v "filename.exe"

然後程式的屬性中就會出現數位簽章的標籤了

因為剛剛簽證做了2次
第一次是 sha1
第二次是 sha256
所以看起來會像下面這張圖這樣


然後點進去詳細裡面
就可以看到剛剛製作 CA 的時候自己設定 CN 這個選項的結果了


大致上數位簽章這樣就完成了
但比較重要的一點
因為這個是沒有經過認證的簽章
所以它還是有可能會被當作不安全的簽章


相關來源:

HowTo: Create self-signed certificates with MakeCert
http://www.virtues.it/2015/08/howto-create-selfsigned-certificates-with-makecert/

[デジタル署名]2016年以降のハッシュアルゴリズムSHA-1廃止について
http://qiita.com/yaju/items/b9b5f06d875d7ef52a9e

Signtoolでの署名方法
https://knowledge.symantec.com/jp/support/bms-support/index?vproductcat=BMS&vdomain=VERISIGN.JP&page=content&id=SO23053&actp=LIST&viewlocale=ja_JP&locale=ja_JP&redirected=true

VisualStudioを入れずに自己署名環境を作る
https://chai99.wordpress.com/2007/10/08/visualstudio%E3%82%92%E5%85%A5%E3%82%8C%E3%81%9A%E3%81%AB%E8%87%AA%E5%B7%B1%E7%BD%B2%E5%90%8D%E7%92%B0%E5%A2%83%E3%82%92%E4%BD%9C%E3%82%8B/

VisualStudioを入れずに自己署名環境を作る
http://d.hatena.ne.jp/chai99/20071008/1191824241


0 件のコメント:

コメントを投稿