Windows數字代碼簽名的作用和流程


什么是數字代碼簽名?數字簽名代碼是一種技術,它使用數字證書來識別軟件的發布商和使用hash算法來確保軟件的完整性。數字簽名使用公共密匙簽名書法被創建,它使用兩種不同的密匙:公共密匙和私有密匙,我們稱其為密匙對。私有密匙一般為擁有者所有,公有密匙對所有的人都可見。

數字簽名代碼的作用

如果你是軟件開發人員,你可能已經知道windows系統和一些瀏覽器(例如IE,Firefox)使用一種稱為數字認證代碼的技術來標識軟件的發行商,來檢查軟件沒有被病毒影響。如果你的軟件沒有用數字認證代碼簽名,用戶將會收到一個警告“此軟件發行商不能被成功的驗證,你是否要繼續運行此軟件“,很多的用戶為了安全起見將放棄對此軟件的使用。

如果你的軟件是提供給專業的人員使用,結果肯能會更糟。許多公司的IT安全策略禁止沒有用數字認證碼簽名的軟件的運行。

同時微軟Windows也使用數字簽名證書來判斷潛在的惡意軟件。如果你的setup.exe沒有進行數字認證證書的簽名,你的軟件的名譽將遭受損害。

在Vista系統增加UAC之后,情況變的更糟,如果你的軟件沒有使用數字認證證書簽名,且在運行時需要管理員的權限,則會出現警告對話框”不可識別的程序想訪問你的計算機“,這個時候很多的用戶可能認為是病毒,會禁止使用你的軟件。

數字簽名代碼流程

數字簽名是對軟件進行標識的一個流程,它通過對軟件增加了發布商的信息來檢查軟件在發布后是否被修改或受病毒影響。在軟件出售前進行簽名已經成為了行業范圍的專業實踐。隨着用戶的安全意識的提高,現在越來越多的用戶限制下載未簽名的軟件,因此作為專業的軟件公司,在軟件出售前進行簽名已經成為必不可少的一步。

要進行數字簽名,需要以下准備:

1)數字證書和密碼;

2)數字簽名工具;

3)時間戳服務器的URL地址;

數字簽名工具

數字簽名工具, 微軟提供了兩套數字簽名工具,

1)signcode.exe, 從1998年開始使用,隨.NET Framework SDK發布。

signcode.exe 數字簽名工具

makecert.exe 創建數字證書

cert2spc.exe 將數字證書轉化為軟件發布者證書格式

2)signtool.exe,隨visualstudio 2005及其以后的版本發布。

signtool.exe 數字簽名工具

makecert.exe 創建數字證書

cert2spc.exe 將數字證書轉化為軟件發布者證書格式pvk2pfx.exe(pvkimprt.exe) 將私有的密匙和軟件發布者證書合並為pfx文件,此文件將被signtool.exe使用上面2中工具的不同是signcode.exe需要輸入私有密匙和軟件發布者證書(pvk和spc文件),signtool.exe只需要輸入由pvk和spc合並產生的一個個人信息交互文件(pfx)。

獲得數字證書

數字證書,你可以創建自己的數字證書來測試數字簽名的流程,但是正式的軟件發布,你需要向可信賴的證書頒發機構購買數字證書和密碼,推薦沃通的數字簽名證書創建自己的數字證書(用來測試)

使用如下命令來創建自己的數字證書:

makecert.exe -sv mykey.pvk -n "CN=Acme Software Inc." mycert.cer你可以將Acme Software Inc.替換為你自己公司的名字。如果mykey.pvk不存在的話,你會要求輸入私有密匙的密碼,密碼可以為空。安全起見最好設置密碼,否則別人拿到你的私有密匙后就可以簽名了。在上面的命令后,產生了2個文件mykey.pvk和mycert.cer。接下來需要將數字證書(cer)轉化為軟件發布商證書(spc),命令如下:

cert2spc.exe mycert.cer mycert.spc

此過程中需要輸入私有密匙的密碼,創建完成后應該會生成mycert.spc文件,當數字簽名時mycert.cer文件是不需要的。

1)使用signcode.exe,如下:

signcode.exe -t <timestamp URL> -spc mycert.spc -v mykey.pvk "<file to be signed>"進行數字簽名的文件可以是.exe, .dll, .ocx 或者是其他的可執行文件。

2)使用signtool.exe,如下:

如果你沒有pfx文件,需要使用以下的命令來將pvk和spc文件合並為pfx,如果沒有設置密碼的話必須使用pvkimprt.exe來合並。

pvk2pfx.exe -pvk mykey.pvk -pi <password> -spc mycert.spc -pfx mycert.pfx -po <password>pvkimprt.exe -pfx mycert.spc mycert.pvksigntool.exe sign /f mycert.pfx /p <password> /t <timestamp URL> /v "<file to be signed>" 以下是使用signtool.exe簽名的一個實例:

signtool.exe sign /f mycert.pfx /p <password> /t <timestamp URL> /v "<file to be signed>"Here is the Sample Output:

The following certificate was selected:

Issued to: SID Software Inc.

Issued by: Thawte Code Signing CA

Expires: 10/16/2011 2:17:15 AM

SHA1 hash: 4374SD894388B9H456E206124G06D9AV1535G12EDone Adding Additional Store

Attempting to sign: jservice.exe

Successfully signed and timestamped: jservice.exeNumber of files successfully Signed: 1

Number of warnings: 0

Number of errors: 0

以上,是為大家分享的"Windows數字代碼簽名的作用和流程”的全部內容,如果用戶遇到的問題不能解決,可通過wosign官網客服尋求幫助,凡是選擇wosign ssl證書的網站用戶,wosign可提供免費一對一的ssl證書技術部署支持,免除后顧之憂.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM