OCX控件數字簽名圖文教程

這段時間做了一個B/S下套打的控件(過幾天整理一下放到博客上來),控件測試完成,但是因爲沒有數字證書,IE如果不設置信任區域和等級的話,會直接被阻止下載安裝(我不期望客戶能熟練地改IE設置),但是數字證書價格昂貴,暫不考慮,看到cnblogs上一篇文章後深受啓發,照着搞了一個測試用的數字簽名,但是這篇文章上的OS貌似是win 2000,IE5,我有必要在win7下給大家做個演示:

首先,下載工具包:signtool.rar ,解壓(最好是根目錄,方便後邊敲路徑),我的路徑是E:\delphi\signtool\

然後在cmd下或者“運行”中輸入:
E:\delphi\SignTool\makecert -sv printocx.pvk -r -n "CN=KeHong Company" printocx.cer

這裏的printocx.pvk是我新創建的私人密鑰;CN=KeHong Company是持有人或者頒發者,你可以CN=XX公司;最後的printocx.cer則是新建的證書。

根據提示在彈出的窗口輸入私鑰密碼(因爲做這個證書的目的並不是爲了安全,所以密碼建議設成123456之類好記的):

執行結束後,在目錄下會生成兩個文件:printocx.pvk、printocx.cer。

證書的製作就是這麼簡單,下面我們來對自己做的ocx控件簽名(我的控件是print.cab),雙擊目錄裏的signcode.exe文件,出現了數字簽名嚮導:

選擇你做的控件:

下一步,簽名選項選“自定義”,下一步,選擇證書,點擊“從文件選擇”,這裏要把默認類型換成X.509證書:

下一步,選擇私鑰,即剛纔生成的printocx.pvk文件:

會提示輸入密碼,即上面你設置的密碼,比如之前我建議你設的123456,下一步,算法選擇sha1即可:

下一步,默認不用管:

下一步,數據描述,這裏要認真寫一下了,最後客戶的IE瀏覽器提示的文件描述就是這裏所填的:

下一步,時間戳也不用理會,直接下一步完成,最後會再次提示輸入私鑰,輸入你設置的密碼123456,確定,即提示“數字簽名嚮導已完成”。

是不是全部搞定了呢?先別激動,看下你的ocx頁面:

提示,右鍵選擇安裝,(win7或vista的系統還會提示一下是否允許更改,確定就是了),然後就會彈出這樣的提示框:

可見,仍然被直接阻止,而且之前設置的頒佈者、提示信息都沒有顯示,很顯然,我們的工作還沒有完成。接下來,我們需要把數字證書(cer文件)安裝到根系統存儲區,“運行”執行如下命令:

E:\delphi\SignTool\certmgr -add -c printocx.cer -s root

會有這樣的一個提示,確定即可:

我們再來看看,打開頁面後,提示已經可以顯示出頒佈者和軟件內容說明了:

右鍵選擇“爲此計算機上所有用戶安裝此加載項”後,就出彈出這樣的一個提示框,詢問是否運行更改計算機,而且很清楚地顯示了頒佈者和軟件名稱,點擊查看證書,證書狀態也正常,這裏直接點擊“是”安裝即可,IE不再阻止(最後的提示是遮罩層提示,沒法截圖,用手機拍的)。

就此,OCX控件數字簽名講解完畢,當然還有一些需要考慮的:總不至於讓用戶執行安裝證書的指令吧?!

這個問題也只能這樣解決:做一個批處理,把certmgr -add -c printocx.cer -s root寫到批處理中,把certmgr.exe和cer證書放到同目錄,讓用戶在使用你的B/S系統之前執行這個批處理即可。我們前面所說的所有內容,都是基於買不起付費數字證書的基礎上,如果你們公司願意買數字證書的話,那是最好不過的,否則只能用這樣的笨辦法給用戶最簡單的體驗。當然,你能說動讓用戶修改IE設置和安全級別的話,我也無話可說,此文僅供參考學習。

花絮:忘記說一件事,還有一種免費而且不用安裝證書的妙招呢,如果你有不用的支付寶電子證書,用這個方法做成簽名證書,用戶訪問頁面的時候,直接就提示信息以及詢問是否安裝,而不直接阻止!當然,你的支付寶賬戶最好是沒用的,以免你的密碼被別有用心的人通過簽名證書破解,造成經濟損失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章