2010-05-17 162 views
13

我需要在Windows 7 64位機器上安裝libusb-win32驅動程序。這個驅動程序是開源的,所以它沒有數字簽名,所以我想自己做這個,但我想知道這是否可以在沒有付出很多錢的情況下完成。是否可以使用未簽署VerisignGlobalSign的證書?也許自簽署或使用StartSSL而不是?用於64位Windows的廉價Windows驅動程序簽名7

如果是的話,我該怎麼做?根據how-to,The Practical Truth About x64 Kernel Driver Signing,我必須使用「交叉證書」(並且Microsoft列表中只有6個可用,其中大多數是針對不再活動的CA)。

我不關心用戶是否面臨警告消息。我甚至可以接受用戶是否必須首先安裝特殊的CA證書。我只要求驅動程序在每次Windows啓動時都不手動禁用簽名檢查的情況下運行。

回答

8

不,驅動程序必須由其中一個特定證書交叉簽名,因此驅動程序必須由其中一個CA簽名。您可以禁用計算機上的驅動程序簽名以用於測試目的,但顯然您不希望在生產計算機上執行此操作。對不起,這就是它的方式。

+1

並且無法注入自定義CA證書,因此Windows接受由此自定義CA簽名的驅動程序? – kayahr 2010-05-18 06:41:07

+1

不,驅動程序需要與Microsoft提供的其中一個證書交叉簽名。您可以添加自己的CA證書,但沒有匹配的交叉簽名證書它不會幫助您;只有Microsoft才能生成交叉簽名證書。 – Luke 2010-05-18 18:49:57

+2

Microsoft的根CA(您將證書與交叉證書相連接)深入到內核中;它與證書存儲無關。雖然您可以通過在證書存儲區中安裝根證書來解決SetupAPI的驅動程序信任排名問題,但這與KMCS無關。 – Ilya 2012-03-27 00:03:47

-5

要允許加載到內核中,您必須使用這些CA進行簽名並檢查WHDL。

唯一的選擇是使用user mode driver framework。 (但libusb不支持它 - 已討論過,但從未實現)

+1

你能解釋「WHDL checked」的含義嗎? – kayahr 2010-05-17 07:20:58

+8

驅動程序不需要通過WHQL加載到x64 Windows上,只需要對其進行簽名即可。 – BCran 2010-09-12 00:09:56

5

LibUSB_win32現在已經簽署,根據http://sourceforge.net/apps/trac/libusb-win32/wiki

它說:「Vista中/ 7/2008/2008R2 64位是從1.2.0.0版本,因爲微軟KMCS接受的數字簽名嵌入內核驅動程序支持libusb0.sys「。

所以你唯一需要做的就是更新你的libusb_win32驅動程序。