給COM/ActiveX控件簽名(signcode,cab,pfx,pvk)

 

【虎.無名】準備用到一個web頁面口令保護的小控件,但是發行商自己沒有購買商用的數字證書,而是使用自己用openssl生成的私有證書來簽名的。公司以前倒是申請過一個用於網站的ssl證書,但不知道能否用來對com控件簽名。檢查了一下,竟然發現公司的私鑰沒有做任何安全保護處理,完全是裸露在外面的。當然,這樣方便了我重用該證書,給控件簽名了。具體的方法,可以參考下面的。

【虎.無名】發現將pfx導入IE後,使用signcode.exe還是無法從證書庫中找到該證書。有另外一種文件格式,但是只能使用微軟私有的pvk格式私鑰。安裝PSDK-x86.exe後的工具集中只有pvk2pfx.exe,搜索pfx2pvk,找到一個第三方工具pvk.exe可以將openssl的私鑰轉換爲pvk格式私鑰。

搜索:pfx2pvk找到頁面:http://www.eggheadcafe.com/forumarchives/securitycrypto/aug2005/post23468123.asp,其有個 回覆提到了一個pvk.exe的小工具 http://www.drh-consultancy.demon.co.uk/pvk.html (Conversion Tools:I have written a conversion tool that will convert a standard RSA key in OpenSSL PEM format into a PVK file and vice versa. You can download the Win32 binary here. )

數字簽名教程請看(阿泰 20050314) http://www.cnblogs.com/babyt/articles/118264.htmlhttp://www.cnblogs.com/babyt/articles/118302.htmlhttp://www.cnblogs.com/babyt/articles/118309.html  

http://www.wotrust.com/support/signcode_guide.htm 微軟代碼簽名證書(.pvk/.spc)簽名指南

http://www.cnblogs.com/interdrp/archive/2009/05/03/1448382.html 這幾天手上在做一個項目,要用到ActiveX控件,在簽名這一步給卡住了,以前可以申請到免費一個月的證書,可我找了一個晚上,發現現在網上都沒有這種證書可以申請了(可能有,但我不知道)。     我都快給急死了,要是無法簽名,那這個項目可就無法做下去了,這麼一個小單專門去買個證書又不合算。前幾個月硬盤壞過一次,以前用的簽名文件都沒了,搬出刻錄的備份光盤一張一張的找,發現有一個文件名爲“賴起疆.pfx”的證書文件,嘿……一時沒想起來這個證書是幹嘛用的,試着安裝這個證書,發現是淘寶網支付寶的備份證書,看了一下證書的信息,嘿……心想,有門,可以試試。

 

先從IE中導出證書文件

運行簽名工具signcode.exe,文中提到的數字簽名工具包,請在此處下載:http://files.cnblogs.com/interdrp/SignTool.rar

時間戳地址爲: http://timestamp.verisign.com/scripts/timstamp.dll

好了,現在我們來驗證一下簽名的結果

在已簽名的ActiveX控件單擊右鍵-->屬性
我們來看一下簽名的詳細信息

我們來看看最終在IE上運行的結果

好了,完全成功!

      最後說明一下,使用的證書是淘寶網支付寶的證書,只要你有用支付寶,那麼你就有這麼一個以你名字命名的數字證書,同時也不怕證書會過期,只要證書過期了,你上淘寶網,註銷一下證書,重新生成一份就是了。

      因我的系統是Windows 2008 所以如果你用Vista以前的系統運行後看到的圖片跟我的貼圖可能有點不一樣。

      有一個問題要注意,如果簽名成功後,你的控件還是無法在IE中顯示,那很大的可能是你控件本身有問題。

 

在實際應用當中並不是所有的電腦用戶都有使用《淘寶》網上購物的,那麼,針對這類用戶,其實有一個很另類的方法,就是在網頁上用JavaScript來判斷對方電腦是否安裝有《淘寶》的安全插件,如果沒有,那麼在代碼中連接到《淘寶》網下載安裝一個控件,這樣在客戶電腦上就有了淘寶的根證書了,然後會再下載安裝我們的控件。

以下爲在網頁中插入的腳本:

 

<script type="text/javascript">
var itruspta1;
try {
itruspta1
=new ActiveXObject("PTA.iTrusPTA");
}
catch(e){
}
//判斷是否安裝控件
if(itruspta1==null){
document.write(
"<OBJECT id=/"iTrusPTA/" codeBase=/"https://img.alipay.com/download/1101/aliedit.cab#Version=2,4,2,471/" classid=/"clsid:1E0DFFCF-27FF-4574-849B-55007349FEDA/" style=/"width:1px;height:1px;/"></OBJECT>");
}else {
}                
</script>

 

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