ActiveX的數位簽章

來源:互聯網
上載者:User

ActiveX的數位簽章
關鍵字: 數位簽章
[轉] Delphi 發布ActiveX控制項 數位簽章
 
原作者:光明兄弟
 

    最近我正在研究ActiveX技術。我使用Delphi 7建立了一個具有ActiveForm的ActiveX控制項應用程式。這個控制項產生一個.OCX檔案。現在,我需要把這個控制項部署在伺服器端,在使用者瀏覽網頁並選擇安裝這個控制項的時候,使用者的IE才會下載、安裝並顯示這個控制項。
 
    但是我的控制項必須作數位簽章以後,IE才會下載安裝。問題是如何給ActiveX控制項作數位簽章呢?現將具體步驟與大家分享。
 
    首先我需要一套做數位簽章的工具。如果你沒有,可以到以下地址下載:
 
    http://files.cnblogs.com/babyt/SignTool.rar
 
    控制項的名字是CustForm.ocx。首先,我們需要建立一個.CAB檔案用來把所有需要發布的檔案壓縮在一起。我們需要一起發布的檔案是CustForm.lic檔案。它是Delphi在我們建立控制項工程的時候為我們產生的。如果不發布這個檔案,你的控制項即使下載安裝成功,IE也無法顯示它。為了在一個.CAB檔案中發布多個檔案,我們必須先建立一個.INF檔案。一個.INF檔案可以告訴IE,它需要下載的檔案和在哪裡可以得到這些檔案。
 
1. 建立.INF檔案
 
    建立一個.INF檔案很簡單,用記事本程式編寫就可以了。我們把我們的.INF檔案取名為GMTestX.inf。因為我們要在.CAB檔案中放入GMTest.ocx和GMTest.lic這兩個檔案,所以我們的.INF檔案的內容如下:
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[version]
    signature="$CHICAGO$"
    AdvancedINF=2.0
  [Add.Code]
    CustForm.ocx=CustForm.ocx
    CustForm.lic=CustForm.lic  //如果建立Active Form時沒有選擇Make Conctrol Lincensed 則不會產生.lic檔案,那麼建立.inf檔案時可去掉此行
  [CustForm.ocx]
    file-win32-x86=thiscab
    clsid={C504DF79-C5EC-4314-AC3E-1F770DB81A01}
    FileVersion=1,0,0,0
    RegisterServer=yes
  [CustForm.lic]//如果建立Active Form時沒有選擇Make Conctrol Lincensed 則不會產生.lic檔案,那麼建立.inf檔案時可去掉此行
    file-win32-x86=thiscab//如果建立Active Form時沒有選擇Make Conctrol Lincensed 則不會產生.lic檔案,那麼建立.inf檔案時可去掉此行
    FileVersion=1,0,0,0//如果建立Active Form時沒有選擇Make Conctrol Lincensed 則不會產生.lic檔案,那麼建立.inf檔案時可去掉此行
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    在這個.INF檔案的[version]部分有兩句代碼。signature="$CHICAGO$"表示這個.INF檔案和Windows95或其後版本和Windows NT 4.0或其後的版本相容。AdvancedINF=2.0表示Advpack.dll的版本,IE 4.0或其後版本必須匯入這個檔案去解析這個.INF檔案。在這裡要求的版本是2.0。
 
    至於[Add.Code]部分,其中列出了在一個.CAB檔案中需要下載的檔案,並把這些檔案的詳細資料映射到其後對應的各個部分。比如[CustForm.ocx]部分中的資訊就是下載CustForm.ocx這個檔案的相關資訊。
 
    在[CustForm.ocx]部分的第一句代碼告訴IE,CustForm.ocx檔案就包含在這個.CAB檔案中。第二行註明了這個控制項的CLSID號。第三行是控制項的版本號碼。第四行告訴IE需要使用前面的CLSID號來註冊這個控制項。[CustForm.lic]部分就不多講了。
 
2. 建立.CAB檔案
 
    在命令列中輸入以下代碼把CustForm.ocx、CustForm.inf和CustForm.lic這三個檔案添加到一個.CAB檔案中,這個檔案取名為CustForm.cab:
 
cabarc.exe -s 6144 N CustForm.cab  CustForm.ocx  CustForm.inf  CustForm.lic
 
3. 建立認證檔案
 
    在命令列輸入以下命令:
 
makecert -sv CustForm.pvk -r -n "CN=SunStar" CustForm.cer
 
4. 轉換認證:
 
cert2spc CustForm.cer  CustForm.spc
 
5. 建立另外一個自我簽署憑證,叫test.cer
 
    在命令列中依次輸入以下兩條命令:
 
makecert -sv test.pvk -r -n "CN=SunStar" test.cer
 
cert2spc test.cer test.spc
 
6. 從test.cer建立test.ctl檔案
 
makectl test.cer test.ctl
 
7. 用CustForm.pvk和CustForm.spc這兩個檔案給test.ctl作數位簽章
 
signcode -v CustForm.pvk -spc CustForm.spc test.ctl
 
8. 把test.ctl移動到受信系統儲存區
 
certmgr -add -ctl test.ctl -s trust
 
9. 把CustForm.cer移動到根系統儲存區
 
certmgr -add -c GMTestX.cer -s root
     
10. 用test.pvk和test.spc給CustForm.cab作數位簽章
 
singcode -v test.pvk -spc test.spc  CustForm.cab
 
11. 檢查檔案是否通過驗證
 
chktrust CustForm.cab
 
如果檔案通過了數位簽章檢測,系統會詢問是否安裝這個檔案,這時候一定要選擇安裝,整個簽名過程才能完成。
 
    執行以上步驟的過程中,有時候需要使用者輸入密碼。使用者可以任意選擇一個密碼,比如12345。
 
    接下來,我們把一個調用Delphi的Web Deploy命令產生的檔案CustForm.htm複製到C:\Inetpub\wwwroot\OurHTML檔案夾中,並修改其內容如下:
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<HTML>
<H1> 群組配置 </H1><p>
<HR><center><P>
<OBJECT
  id  =CustForm 
   classid="clsid:7E302B32-912F-427B-98D0-03AB15716E81"
   codebase="/OurCAB/CustFormX.cab#version=1,0,0,0"
   width=100%
   height=80%
   align=center
   hspace=0
   vspace=0
  
   <param   name=Invaild         value=Invaild> 
    <param   name=wsroot          value=http://192.168.0.56:8080/adms/services/> <!--value={TMPL,OUTPUT,COND}--> 
>
</OBJECT>
</HTML>
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再將簽名的CustForm.cab檔案移動到C:\Inetpub\wwwroot\OurCAB檔案夾中。
 
    好了,現在開啟IE,在地址欄中輸入:http://localhost/OurHTML/CustForm.htm後,IE詢問是否下載這個控制項,我們選擇是,就可以看到我們的ActiveX控制項的表單了。大功告成!
 
    總算完成了。步驟挺繁瑣,但是好像必須這麼做。我們對這個過程中涉及的相關技術並不十分瞭解。察看MSDN文檔可以找到很多資料,想全部搞清楚得費點勁。不管怎樣,用這些步驟就可以達到目的。如果你發現有什麼錯誤,或者有什麼疑問,歡迎留言。如果這篇文章對你有所協助,目的就達到了。謝謝。

 

============================

 

中間有些技術沒有明白到,比如今天查資料的時候會說到數位簽章是需要去申請的。但這裡沒有寫明,不知道是不是不需要這個。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.