給ActiveX控制項加上數字簽名的步驟

2021-04-13 01:12:04 字數 2484 閱讀 4468

簡單地說,所謂數字簽名就是附加在資料單元上的一些資料,或是對資料單元所作的密碼變換。這種資料或變換允許資料單元的接收者用以確認資料單元的**和資料單元的完整性並保護資料,防止被人(例如接收者)進行偽造。它是對電子形式的訊息進行簽名的一種方法,乙個簽名訊息能在乙個通訊

網路中傳輸。基於公鑰密碼體制和私鑰密碼體制都可以獲得數字簽名,目前主要是基於公鑰密碼體制的數字簽名。包括普通數字簽名和特殊數字簽名。普通數字簽名演算法有rsa、elgamal、fiat-shamir、guillou- quisquarter、schnorr、ong-schnorr-shamir數字簽名演算法、des/dsa,橢圓曲線數字簽名演算法和有限自動機數字簽名演算法等。特殊數字簽名有盲簽名、**簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有訊息恢復功能的簽名等,它與具體應用環境密切相關。顯然,數字簽名的應用涉及到法律問題,美國聯邦**基於有限域上的離散對數問題制定了自己的數字簽名標準(dss)。一些國家如法國和德國已經制定了數字簽名法。數字簽名(digital signature)技術 數字簽名技術是不對稱加密演算法的典型應用。數字簽名的應用過程是,資料來源傳送方使用自己的私鑰對資料校驗和或其他與資料內容有關的變數進行加密處理,完成對資料的合法「簽名」,資料接收方則利用對方的公鑰來解讀收到的「數字簽名」,並將解讀結果用於對資料完整性的檢驗,以確認簽名的合法性。數字簽名技術是在網路系統虛擬環境中確認身份的重要技術,完全可以代替現實過程中的「親筆簽字」,在技術和法律上***。在公鑰與私鑰管理方面,數字簽名應用與加密郵件pgp技術正好相反。在數字簽名應用中,傳送者的公鑰可以很方便地得到,但他的私鑰則需要嚴格保密。

數字簽名:數字簽名驗證傳送方的標識並保護資料的完整性。事實上數字簽名不是一種具體的技術實現,它是基於以上各種加密技術組合的解決方案。通常乙個基本的數字簽名方案可能有如下步驟:

雙方各自生成乙個公鑰/私鑰對。

雙方交換他們的公鑰。

雙方生成乙個用於對稱加密法的私鑰,並使用該對稱私鑰加密要傳送的訊息。

生成加密後訊息的雜湊值。

用對方的共鑰加密對稱私鑰和雜湊值(該組合密文即為簽名),並將該簽名附加在訊息主體的密文後傳送給對方。

首先要有工具包,包括以下幾個軟體:

makecert.exe 製作cer格式的證書,即x.509證書,同時可以建立私鑰

cert2spc.exe 將cer格式證書轉換成spc格式證書,即pkcs #7證書

signcode.exe 將證書簽署到ocx上去

chktrust.exe 檢查簽署證書後的ocx是否正確

還有乙個certmgr.exe,是管理證書用的。

下面是具體的步驟:

1、建立乙個自己的證書檔案:

makecert /sv "record.pvk" /n "cn=公司名稱,e=email,o=作者" dream.cer

這裡,record.pvk表示新建立的私人金鑰儲存檔名

dreamcaptial是你想顯示的公司名

dream.cer是你建立最後的證書檔名

這些根據你自己的要求填寫,最後得到record.pvk和dream.cer兩個檔案。

其中,執行過程中需要輸入私人金鑰的保護密碼,一定要輸入一致,不要

出錯。2、轉換cer格式為spc格式(可以省略)

cert2spc dream.cer dream.spc

得到dream.spc檔案。

3、給ocx進行簽名

執行signcode,命令列的我沒有試驗通過,我是通過介面實現的。

signcode執行後會出現數字簽名嚮導,首先選擇你要簽名的ocx,

下一步後會出現簽名選項,一種是典型,一種是自定義。選擇自定義,

這樣才能從檔案選擇證書,選擇前面製作的dream.spc,再下一步是

選擇私鑰檔案,選擇record.pvk,輸入私人金鑰的保護密碼,選擇散

列演算法,一般用md5就可以了,下一步是選擇其他證書,直接下一步,

填寫一下這個控制項的宣告,使用者用ie瀏覽的時候,會彈出證書說明,

再下一步是加蓋時間戳,我不會,直接下一步就完成了。

4、用chktrust檢查是否正確

chktrust -v recordproj.ocx

就這樣,得到了乙個測試證書,恩,雖然只是乙個測試證書,但至

少保證這個ocx在ie瀏覽的時候能夠彈出來乙個視窗,問你是否安裝,

而不是直接禁止了。

數字簽名的問題

在activex控制項加上數字簽名的時候,如果使用makecert 不使用is引數,生成的證書是由root gency頒發的,安裝後root

agency是中級證書頒發機構,因此該證書是不受信任的。

activex在第一次載入時,因為證書的根是不可信任的,所以只能顯示未知的發行商,此時就需要先安裝證書,把證書安裝成受信任的根證書頒發機構,就可以看到發行商的資訊了。

makecert最好用is引數生成自根證書,然後再由這個自根證書生成子證書,然後證書安裝的時候,會自動加入受信任的根證書頒發機構中。

windows自帶了verisign,ca之類的根證書,如果是國內的證書機構,也是要安裝根證書,否則跟自已製作的證書沒兩樣。

給ActiveX控制項做數字簽名

出處 http www.cnblogs.com babyt 最近一段時間,收到不少關於控制項數字簽名的問詢,都是針對我之前的文章 給控制項做數字簽名之一 將控制項打包為web發布包 給控制項做數字簽名之二 生成證書檔案 給控制項做數字簽名之三 進行數字簽名 所提供的方法在ie7下無法執行的問題,簽名...

給數字加上註解

注釋 命名清晰 簡單,單獨的變數使用,例如 變數定義 int a 1 判斷 if a 1 這些情況下通常會利用巨集定義來代替這些幻數 魔數,例如 定義 define max 1 使用 a max if a max 陣列使用,例如 gui程式設計需要定義5個按鍵,class,pop,定義 button...

如何給activeX加數字簽名

首先要有工具包,包括以下幾個軟體 makecert.exe 製作cer格式的證書,即x.509證書,同時可以建立私鑰 cert2spc.exe 將cer格式證書轉換成spc格式證書,即pkcs 7證書 signcode.exe 將證書簽署到ocx上去 chktrust.exe 檢查簽署證書後的ocx...