下載app免費(fèi)領(lǐng)取會(huì)員
今天說(shuō)說(shuō)數(shù)字簽名這個(gè)事情。一般來(lái)說(shuō)公司發(fā)布插件產(chǎn)品肯定要對(duì)插件進(jìn)行數(shù)字簽名的。之前的文章也提到,Autodesk Revit自2017版開(kāi)始對(duì)插件進(jìn)行數(shù)字簽名認(rèn)證。
所謂數(shù)字簽名就是添加到文件的電子安全標(biāo)記。使用它可以驗(yàn)證文件的發(fā)布者以及幫助驗(yàn)證文件自被數(shù)字簽名后是否發(fā)生更改。如果文件沒(méi)有有效的數(shù)字簽名,則無(wú)法確保該文件確實(shí)來(lái)自它所聲稱(chēng)的源,或者無(wú)法確保它在發(fā)布后未被篡改(可能被病毒篡改)。
當(dāng)每次編譯完dll,然后用Revit加載調(diào)試時(shí),Revit都會(huì)提示“永遠(yuǎn)加載”,“加載一次”,“不載入”三種情況。
a. 如果你就編譯一次,以后永遠(yuǎn)都不會(huì)編譯了,就選擇“永遠(yuǎn)加載”。這種情況一般是我們從開(kāi)源社區(qū)下載常用工具代碼,自己編譯dll的情況。比如自己從Github編譯Revit Lookup工具。
b. “加載一次”, 一般就是調(diào)試的時(shí)候常用的情況。
c. "不載入",字面意思,不過(guò)多解釋。
那么如果我們購(gòu)買(mǎi)了數(shù)字簽名證書(shū),該如何對(duì)自己的dll進(jìn)行簽名呢?什么是雙數(shù)字簽名?怎么進(jìn)行雙數(shù)字簽名?這都是我需要告知大家的。
假設(shè)我們已經(jīng)從安全證書(shū)公司購(gòu)買(mǎi)了數(shù)字簽名證書(shū),我們對(duì)dll最佳的簽名方式是使用腳本簽名,常用的就是bat腳本。
雙數(shù)字簽名指的是既對(duì)dll進(jìn)行sha1算法簽名,又對(duì)其使用sha256簽名。“sha1加密算法的不安全性越來(lái)越高,sha1造假成本越來(lái)越低,隨即微軟、谷歌等IT巨頭相繼發(fā)布棄用sha1加密算法聲明,第三方認(rèn)證機(jī)構(gòu)自2016年1月1日起,將全面停止簽發(fā)SHA1算法的數(shù)字證書(shū)?!?SHA1算法被SHA-256所取代,所以我們的插件dll需要雙簽名操作,當(dāng)然你可以只用sha256。
進(jìn)行簽名前的文件清單:
1. 證書(shū)文件:xxx.pfx
2. 你的待簽名dll: xxx.dll
3. signtool及其依賴(lài)項(xiàng):
a. appxpackaging.dll
b. appxsip.dll
c. Microsoft.ComparePackage.Lib.dll
d. Microsoft.Windows.Build.Appx.AppxPackaging.dll.manifest
e. Microsoft.Windows.Build.Appx.AppxSip.dll.manifest
f. Microsoft.Windows.Build.Appx.OpcServices.dll.manifest
g. Microsoft.Windows.Build.Signing.mssign32.dll.manifest
h. Microsoft.Windows.Build.Signing.wintrust.dll.manifest
i. mssign32.dll
j. opcservices.dll
k.signtool.exe
l. signtool.exe.manifest
m. wintrust.dll
o. wintrust.dll.ini
以上這些文件上哪里找呢?
在Win10系統(tǒng)里:
D:\Windows Kits\10\bin\10.0.17134.0\x86文件夾中
把他們復(fù)制出來(lái)的時(shí)候記得也放一個(gè)文件夾里,因?yàn)閟igntool.exe是依賴(lài)于這些的。
那么為什么是win10系統(tǒng),win7可以不?
貌似不行唉,版本太低,反正我自己測(cè)是簽不了sha256,想了好久。。。
下載個(gè)Win10的SDK里應(yīng)該也會(huì)有上述文件。
需要說(shuō)明的是exe,dll可以雙數(shù)字簽名。msi只能sha1,不能sha256,這是我測(cè)試的結(jié)果,歡迎來(lái)群里討論。
最后祭出腳本,方便各位local bat script或者server Jenkins全自動(dòng)化工作:
SHA1:
signtool.exe sign /f xxx.pfx /p password /t http://timestamp.verisign.com/scripts/timestamp.dll /v xxx.dll
SHA256:
signtool.exe sign /f xxx.pfx /p password /fd sha256 /tr sign256url /v /as xxx.dll
紅色部分需要全路徑或相對(duì)路徑,因?yàn)槊考襰ha256的簽名url不同,所以藍(lán)色部分填上購(gòu)買(mǎi)的數(shù)字簽名公司對(duì)應(yīng)的時(shí)間戳地址。
本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。
下一篇:Civil 3D如何創(chuàng)建三維曲線(xiàn)
推薦專(zhuān)題