Microsoft.Net中的數(shù)字簽名技術(shù)

對(duì)于 Internet 應(yīng)用程序的開發(fā)人員和用戶而言,惡意的代碼、被篡改的代碼和來自未知站點(diǎn)或作者的代碼對(duì)代碼的安全都會(huì)造成不小的威脅。對(duì)此我們可以使用數(shù)字簽名的方法來保證安全。

數(shù)字簽名是用于識(shí)別和提供關(guān)于代碼發(fā)行者的詳細(xì)資料的工業(yè)標(biāo)準(zhǔn),對(duì) Internet 稱為“收縮包裝”。使用私匙/公匙技術(shù)驗(yàn)證和簽名代碼。在代碼運(yùn)行之前,驗(yàn)證其數(shù)字簽名,確保該代碼的來源是已知的并且經(jīng)過驗(yàn)證,并且自簽名后該代碼未被更改過。給文件簽名首先要獲得軟件發(fā)行證書。為此,必須向證書頒發(fā)機(jī)構(gòu)提出請求。步驟如下:

1、 獲得軟件發(fā)行證書

第一步:開始菜單->運(yùn)行,輸入cmd.exe。打開windows 2000的命令提示符環(huán)境窗口。

第二步:輸入CD C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin,進(jìn)入該目錄,用dir命令你可以看到signcode.exe、makecert.exe和cert2spc.exe程序。注意:以上路徑根據(jù)你機(jī)器Microsoft.Net的安裝路徑不同而異。

第三步:創(chuàng)建用于數(shù)字簽名的公鑰和私鑰對(duì),并將其存儲(chǔ)在證書文件中。輸入makecert -sk WHX -n "CN=WHX COMPANY" c:\testWHX.cer。就會(huì)在你的C:生成testWHX.cer文件。

說明:參數(shù)-n指定主題的證書名稱。此名稱必須符合 X.500 標(biāo)準(zhǔn)。最簡單的方法是在雙引號(hào)中指定此名稱,并加上前綴 CN=;例如,"CN=myName"。注意這里的CN必須大寫。-sk指定主題的密鑰容器位置,該位置包含私鑰。如果密鑰容器不存在,系統(tǒng)將創(chuàng)建一個(gè)。輸入makecert -?可以查看其他參數(shù)的用法。

第四步:創(chuàng)建發(fā)行者證書 (SPC)。注意,發(fā)行者證書測試工具通過一個(gè)或多個(gè) X.509 證書創(chuàng)建發(fā)行者證書 (SPC)。Cert2spc.exe 僅用于測試目的??梢詮淖C書頒發(fā)機(jī)構(gòu)(如 VeriSign 或 Thawte)獲得有效的 SPC。輸入命令:cert2spc c:\testWHX.cer c:\testWHX.spc,在C:盤生成證書文件。至此,你已經(jīng)擁有了僅用于測試的軟件證書。其實(shí),我們開發(fā)的程序或ActiveX控件只要僅用于企業(yè)內(nèi)部,完全可以用這種辦法作數(shù)字簽名,使你的控件可以在瀏覽器里自動(dòng)下載,而不必去專門的證書辦法機(jī)構(gòu)獲得證書。

Microsoft.Net中的數(shù)字簽名技術(shù)

2、 創(chuàng)建CAB文件

CAB文件是一種WINDOWS的標(biāo)準(zhǔn)壓縮格式文件,在網(wǎng)頁上發(fā)布ActiveX的時(shí)候經(jīng)常使用該壓縮格式對(duì)文件進(jìn)行包裝,目的是使文件便于在Internet上傳輸。創(chuàng)建CAB文件的方法有很多,可以在Microsoft visual studio .Net 2003中“創(chuàng)建CAB項(xiàng)目“,也可以用WINDOWS自帶的iexpress.exe(c:\windows\system32目錄下),甚至還有其他的壓縮工具。

3、 簽署文件

在上面打開的dos窗口里,輸入如下命令:signcode /spc c:\testWHX.spc /k WHX c:\whx.cab

至此,已經(jīng)對(duì)成功對(duì)whx.cab文件簽名??梢圆榭次募膶傩?,查看數(shù)字簽名。