摘要
人家微軟的軟體都有數位簽章,感覺好酷哦,我們寫的軟體也要弄個簽名炫一炫。
帶有簽名的軟體非常酷
在QQ的安裝檔案上右擊,選“屬性”,就可以看到QQ的數位簽章了。
使用Process Explorer或SREng查看系統中正在啟動並執行程式時,也可以驗證程式是否有數位簽章,如果我們的程式顯示“Unable to verify”,那顯得多不專業呀。
給自己的程式加上籤名
中的那個MathLover121.exe是我在上學的時候用C++ Builder寫的一個小軟體,不用說,它肯定是沒有簽名的了。下面就來示範一下如何使用微軟的簽名工具SignTool簽名這個EXE檔案。要進行簽名,首先要有數位憑證才行。如果你的公司已經申請了數位憑證,那就再好不過了;但是鑒於很多朋友手中沒有數位憑證,這裡就先介紹一下如何在CA365上申請一個免費的數位憑證。
申請免費的數位憑證
Step1: 登入www.ca365.com,在“免費認證”欄中點擊“用表格申請認證”連結。
Step2: 填表,基本上可以瞎填的,沒人管。
Step3: 在上一步按“提交”按鈕後稍等一會兒,會自動進入下載認證的頁面,點擊“下載並安裝認證”連結下載並儲存認證,預設的檔案名稱是“NewCert.der”。
Step4: 安裝認證。
在“NewCert.der”檔案上右擊,選擇“安裝認證”即可。
接下來就可以開始簽名EXE檔案了。
使用SignTool簽名EXE檔案
Step1: 通過“開始菜單|程式|Microsoft Visual Studio 2005|Visual Studio Tools|Visual Studio 2005 命令提示”開啟命令列表單。 |
Step2: 執行“signtool signwizard”。 |
|
Step3: 在“數位簽章嚮導”中點擊下一步,來到“檔案選擇”頁,選擇需要簽名的檔案。注意如果檔案放在了案頭下會提示“指定的檔案不存在或為唯讀檔案”的錯誤資訊,可能是檔案夾許可權的問題。 |
|
Step4: 點擊“下一步”,來到“簽名選項”頁,選擇“典型”即可。 |
Step5: 點擊“下一步”,來到“簽署憑證”頁,點擊“從儲存區選擇...”按鈕,然後選擇我們剛剛申請並安裝的那個認證。 |
|
Step6: (可選)點擊下一步,在“資料描述”頁可以填寫一些描述資訊。 |
Step7: (可選)點擊下一步,在“給資料蓋時間戳記”頁,填寫時間戳記服務的URL。這裡有兩個免費的時間戳記伺服器URL:http://timestamp.verisign.com/scripts/timstamp.dll http://timestamp.wosign.com/timestamp |
|
Step8: 點擊“下一步”,在“正在完成數位簽章嚮導”頁最後瀏覽一下所有的設定,確認無誤後點擊“完成”按鈕開始簽名。 |
Step9: 在彈出的“正在用您的專用交換密鑰簽名資料”對話方塊上按“確定”按鈕。 |
|
Step10: 看到“數位簽章嚮導已成功完成”資訊,說明簽名成功了。 |
|
現在,在Windows的資源管理員中右擊MathLover121.exe選“屬性”,就可以看到多了一個“數位簽章”頁。點擊“詳細資料”按鈕可以查看認證的詳細資料。
在Process Explorer裡也可以驗證簽名了。
不過如果把這個已簽了名的MathLover121.exe複製到我的同事的電腦上用Process Explorer驗證簽名,會仍然顯示“Unable to verify” _| ̄|○ (好像有磚頭飛來的聲音,我閃先~~),這是因為 ca365的根憑證預設並沒有安裝在Windows系統的“受根信任憑證授權單位”列表中。在我的機器上能驗證成功是因為我事先已經匯入了CA365的根憑證。關於數位憑證和根憑證的關係可以看我的白話數位簽章(2)。
可以在“開始菜單 | 運行...”裡執行“certmgr.msc”查看“受根信任憑證授權單位”列表。
所以如果你希望Windows信任你就乖乖的向這個列表中的公司交錢吧,例如QQ的安裝檔案就是使用的 VeriSign 的程式碼簽署認證。
還有一個奇怪的問題...
但是如果我們在“C:\Program Files\Internet Explorer\IEXPLORE.EXE”上面右擊,再點擊“屬性”,可以看到並沒有顯示數位簽章頁,但是在Process Explorer中卻可以成功驗證簽名,這是怎麼回事呢?呵呵,先賣個關子,下篇再講