2012-05-25 59 views
19

我爲一家銷售USB設備併爲他們提供驅動程序的公司工作。在Windows 8中,第三方INF驅動程序文件是否需要簽名?

在Windows 7中,只要不向內核添加任何代碼,就可以爲USB設備安裝和使用未簽名的INF驅動程序文件。我們公司使用微軟提供的通用驅動程序(usbser.syswinusb.sys),所以我們不需要簽署我們的驅動程序包。

根據我們的客戶之一,從另一個堆棧溢出問題What changed in the driver signature requirements for Windows 8?the Arduino forum,這聽起來像在Windows 8消費者預覽版已經要求所有第三方INF文件得到簽署嚴格的簽名要求的報告。嘗試安裝在Windows 7  工作驅動程序時,該錯誤消息的人越來越是:

第三方INF不包含數字簽名信息。

什麼是來自微軟的官方文字,確認在最終版本的Windows 8中籤名仍然是必需的?來自MSDN.com的一兩句話就足夠了,但我找不到任何東西。

我正在考慮購買簽名證書,但是在我付200美元之前,我想確定我會長期需要它。新的簽名要求可能只是在消費者預覽中,而不是在真實版本中?

+0

是微不足道的取得消費者預覽。所以你可以自己找出來。很難相信你沒有。此外,你賣東西,但不準備咳嗽200美元的簽名?!這是貴公司年度利潤的一小部分? –

+1

獲取消費者預覽並不能真正幫助做出這個決定。我希望能夠及時向前邁進並獲得Windows 8的官方副本。是的,我很節儉。問這個問題 –

+0

約7個月後,我寫了一篇大文章解釋一切,我已經瞭解了話題:http://www.davidegrayson.com/signing/總之,Windows 8中確實需要您註冊您的INF文件,但它不一定是WHQL簽名;它只需要有一個信任鏈返回到受信任的根證書頒發機構列表中的證書。 –

回答

17

要回答我的問題:是的,Windows 8的最終版本並要求要簽署所有的INF文件,但你並不需要提交您的驅動的WHQL。我在我的文章Practical Windows Code and Driver Signing中寫了關於這個要求的更多內容。

+3

真的很有用的文章,謝謝 – Vicky

7

它不僅需要簽署INF文件,還要求它們由WHQL證書籤名,這與您用於嵌入簽名.sys文件等的證書不同。在INF文件上使用我的代碼簽名證書根本不起作用。 (同樣的問題如果不簽名。)

編輯:

這是微軟希望你的想法。他們表示某些類別的驅動程序必須進行WHQL簽名,否則它們將不起作用,並且Authenticode簽名僅適用於那些沒有進行WHQL過程的程序。

事實證明,你可以驗證碼標誌的驅動程序包,但你必須照顧和他們簽名,就像您現在內核代碼,這意味着獲得正確的交叉證書,以便CA(從Cross-Certificates for Kernel Mode Code Signing,還有噸他們現在包括StartCom,我有(2級,兩年60美元,但他們不能被加蓋時間戳)。提供這個交叉證書(不同於你的CA的自簽名證書或他們的中介證書。僅在該MSDN頁面上可用)到SignTool通過/ac開關

然後使用SignTool驗證/kp開關以查看是否y ou交叉簽署正確。沒有任何開關的SignTool驗證需要.cat文件是WHQL簽名的,而/pa開關之前看起來沒問題,現在太鬆了,只適用於非驅動程序簽名(如EXE文件,ClickOnce等)。 )。

如果你不想獲得你自己的內核級簽名證書(坦白地說,現在比以前更容易了,在VeriSign的超級昂貴和GlobalSign每年200美元的限制之前,我想微軟看到,沒有多少人寫了x64系統的內核級漏洞),你可以做一個自簽名的根CA,有你的驅動程序安裝程序安裝入LOCALMACHINE的「受信任的根證書頒發機構」店(請參閱certmgr.exe),然後安裝由其簽名的.cat文件。當然,由於這不是內核級的代碼證書,所以你必須只使用.sys文件,這些文件已經有了來自其他人的嵌入式內核級代碼證書(這意味着你只能修改驅動程序包中的.inf文件) 。顯然,有一些漏洞,允許自簽名證書籤名的.cat文件(如果你做你自己的CA,然後簽署了一份證明書,然後用你的簽署.cat文件,它將無法​​正常工作像這個)。關於貓的文件

一套房,這是否爲每個驅動程序INF包它使,見libwdi,以及他們自簽名證書允許安裝在Windows 8  

EDIT2:

刪除CERTUM 「開放源碼」開發人員證書提及,因爲它沒有得到Microsoft的交叉認證(您得到的不是Certum TRUSTED NETWORK,而是Microsoft交叉認證的)。

+0

*我很肯定你錯了。*我從Go Daddy獲得了一個正常的證書,它在Windows 8預覽的INF文件中正常工作。我不必向微軟提交任何東西。如果你想得到一些幫助,請寫一個StackOverflow問題,並給我更多的細節。有關您應該提供的詳細信息,請參閱http://stackoverflow.com/questions/12291461/signed-inf-driver-works-on-the-computer-where-it-was-signed-not-others請在這裏發佈評論或其他內容,以便我知道您何時撰寫了您的問題。 –

+0

我已經更新我的答案與試錯的約3天的信息,我已經成功地就獲得了自簽名證書籤名的.cat文件去,和我自己的驗證碼簽名的.cat文件去(在兩個win8的和更早版本windows版本) – rajkosto

+1

它是'/ ac',而不是'/ ca'。它是'/ pa'而不是'/ pe'。此外,我已經能夠成功地簽署簡單的驅動程序包,只是由INF和CAT文件組成,而不使用交叉證書;重要的是您的信任鏈回到受信任的根證書存儲區中。我引用個人經驗和http://msdn.microsoft.com/en-us/library/windows/hardware/gg487332.aspx作爲我的來源。此外,爲了驗證驅動程序包,我認爲'/ pa'是正確的選項,因爲這是他們在kmcs_walkthrough.doc中的做法。 –

相關問題