基本上自己認證自己的 certification 文件是沒意義的, 就好像是一個陌生人, 拿著一張自製的證件, 告訴你他是好人, 你會信嗎?
所以一般而言, 我們通常會找一家認證的公司, 由它提供給我們認證文件. 接著我們用這個認證文件來 sign 軟体. 當散佈到網路上時, 由下載的人自行到公正的單位對你的軟体進行驗證.
舉例來說: 一個陌生人拿一張證件告訴你他是好人, 我們到警察局去驗證這張證件的真偽, 然後藉由相信警察局, 而相信這個陌生人是好人.
故對於軟体在網路上流通, 為了避免被人竄改, 一般軟体公司會去一家認證公司 (例如: verisign), 驗證身份, 繳年費後, 搭配指定的密碼, 取得認證檔 pvk 與 spc 檔.
有了這兩個檔, 你就可以用 signtool 簽署你的軟体了. 而使用者的軟体會自動連到已知公正機關檢查認證是否為真, if yes, 然後放心讓使用者繼續安裝軟体.
至於有沒有一家認證公司可以提供 Opensource 軟體, 免費的 certification 文件呢? 我記得有, 可是這還得仰賴高手的幫忙. 請高手出面說明一下吧. ^_^
有人問我: [如果要產生自己的 pvk 與 spc 自己玩, 也就是發行自己認證的 certification, 那該怎麼做呢?]
很簡單, 四個步驟
只不過你軟体裡面的證件, 沒有在公正的地方登記, 瀏覽器 (ex: IE) 會警告使用者.
Step 1: 建立自己認證自己的 certification 文件
指令:
makecert -sv mykey.pvk -n "CN=Jing Software Inc." mycert.cer
產生文件:
mykey.pvk
mycert.cer
Step 2: 轉成工具能使用的 Software Publisher Certificate format
指令:
cert2spc.exe mycert.cer mycert.spc
產生文件:
mycert.spc
Step 3: 組成 pfx 文件 (PKCS #12)
指令:
pvk2pfx.exe -pvk mykey.pvk -pi <password> -spc mycert.spc
-pfx mycert.pfx -po <password>
例如:
pvk2pfx.exe -pvk mykey.pvk -pi demo -spc mycert.spc
-pfx mycert.pfx -po demo
產生文件:
mycert.pfx
Step 4: 簽署你的軟體
signtool.exe sign /f mycert.pfx /p <password>
/t <timestamp URL> /v "<file to be signed>”
例如:
signtool.exe sign/f mycert.pfx
/p demo
/t http://timestamp.verisign.com/scripts/timstamp.dll
/v "<file to be signed>”
Enjoy!
by Jing.
延伸閱讀
[1] 井民全, “[Plugin] 如何為你的 ActiveX 元件 (cab 檔) 加入數位簽章 – signtool,” http://mqjing.blogspot.com/2009/03/plugin-activex-cab-signtool.html, 2009/03.
你好:感謝您的Blog文章,對我目前的工作非常有幫助 謝謝
回覆刪除我照著你的敍述跟著做,在前面的步驟都是對的...但在Signtool執行就出現問題
先說
目的是什麼
1.要在Win8 64bit安裝Printer Driver但需要有信任的"catalog file"(.cat檔),才可以正常安裝
結果:
產生出來的是
"The signer's certificate is not valid for signing"
"An error occurred while attempting to sign: C:\AR-24-64bit_04\gcc.cat"
我下的指令是
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>signtool sign /f gcc_pfx.pfx /p 12345 /t http://timestamp.verisign.com/scripts/timstamp.dll /v
"C:\AR-24-64bit_04\gcc.cat""
而我的Cat則是由WinDDK內的inf2cat.exe所產生的(此cat是不被信任的)
請問我是否有少了什麼步驟或檔案那裡不正確的
在此先感謝你的幫忙
受用了,謝謝
回覆刪除您好,我在網路上找到您的文章,以下節錄,但因為文章已經不完整,尋尋覓覓找到您的這個網站,請問是否還有這篇文章可以參考嗎.. 感激不盡~~~
回覆刪除個人著作 @電腦王雜誌 – 30 分鐘寫程式專欄
歡迎傳閱, 並請多多指教
井民全個人網站 Advanced Windows Programming Course
目前網址: http://debut.cis.nctu.edu.tw/~ching
〈三十分鐘寫程式〉 註解 : 專欄名稱,由編輯
部填寫。
自訂快捷鍵 瞬間切換程式
老闆鍵、熱鍵、我們自己來定義
文:井民全
關鍵字: 視窗程式設計, Global Hot Key
老實說, 我很不喜歡使用滑鼠. 主要的原因就是慢!
自訂快捷鍵 瞬間切換程式 -- 老闆鍵、熱鍵、我們自己來定義 (Let's Define the Global Hotkeys)
回覆刪除http://debut.cis.nctu.edu.tw/~ching/Course/AdvancedC++Course/__Page/Advanced_PChome/02%20Boss%20Key/bosskey.pdf