2012-05-25 19 views
19

Tôi làm việc cho một công ty bán thiết bị USB và cung cấp trình điều khiển cho họ.Trong Windows 8, các tệp trình điều khiển INF của bên thứ ba có yêu cầu chữ ký không?

Trong Windows 7, bạn có thể cài đặt và sử dụng tệp trình điều khiển INF chưa được ký cho thiết bị USB miễn là chúng không thêm bất kỳ mã nào vào hạt nhân. Công ty chúng tôi sử dụng các trình điều khiển chung do Microsoft cung cấp (usbser.syswinusb.sys), vì vậy chúng tôi không bao giờ cần ký các gói trình điều khiển của mình.

Dựa trên một báo cáo từ một trong những khách hàng của chúng tôi và từ một câu hỏi Stack Overflow What changed in the driver signature requirements for Windows 8?the Arduino forum, có vẻ như Windows 8 Consumer Preview có những yêu cầu khắt khe hơn ký đòi hỏi tất cả các file của bên thứ ba INF để có được ký kết. Thông báo lỗi mọi người nhận được khi cố cài đặt trình điều khiển hoạt động trên Windows   7 là:

INF bên thứ ba không chứa thông tin chữ ký kỹ thuật số.

Từ chính thức của Microsoft xác nhận rằng chữ ký sẽ vẫn được yêu cầu trong phiên bản cuối cùng của Windows 8? Một hoặc hai câu từ MSDN.com sẽ là đủ, nhưng tôi không thể tìm thấy bất cứ điều gì.

Tôi đang cân nhắc việc mua chứng chỉ ký, nhưng trước khi tôi trả $ 200, tôi muốn chắc chắn rằng tôi sẽ thực sự cần nó trong thời gian dài. Có thể yêu cầu ký mới chỉ nằm trong bản xem trước của người tiêu dùng chứ không phải trong phiên bản thực?

+0

Thật tầm thường để có được bản xem trước của người tiêu dùng. Vì vậy, bạn có thể tìm ra cho chính mình. Khó mà tin được là bạn không có. Ngoài ra, bạn bán những thứ nhưng không chuẩn bị để ho lên $ 200 cho một chữ ký ?! Đó là một phần lợi nhuận hàng năm của công ty bạn? –

+1

Lấy bản xem trước của người tiêu dùng sẽ không thực sự giúp đưa ra quyết định này. Tôi lý tưởng muốn tiến bước trong thời gian và có được bản sao chính thức của Windows 8. Và có, tôi đang tiết kiệm. –

+0

Khoảng 7 tháng sau khi đặt câu hỏi này, tôi đã viết một bài viết lớn giải thích tất cả mọi thứ tôi đã học về chủ đề: http://www.davidegrayson.com/signing/ Tóm lại, Windows 8 yêu cầu bạn ký các tệp INF của bạn nhưng nó không phải là một chữ ký WHQL; nó chỉ cần có một chuỗi tin cậy quay trở lại chứng chỉ trong danh sách Nhà chức trách chứng nhận gốc tin cậy. –

Trả lời

17

Để trả lời câu hỏi của riêng tôi: Có, phiên bản cuối cùng của Windows 8 yêu cầu tất cả các tệp INF phải được ký, nhưng bạn không cần gửi trình điều khiển của mình cho WHQL. Tôi đã viết về yêu cầu này và nhiều hơn nữa trong bài viết của tôi Practical Windows Code and Driver Signing.

+3

Bài viết hữu ích, cảm ơn bạn – Vicky

7

Không chỉ yêu cầu ký các tệp INF, nó cũng yêu cầu chúng phải được ký bởi chứng chỉ WHQL, không giống với chứng chỉ mà bạn sử dụng cho tệp .sys được nhúng và ký tự tương tự. Sử dụng chứng chỉ Code Signing của tôi trên file INF không hoạt động. (Các vấn đề tương tự như nếu không được ký.)

EDIT:

Đây là những gì Microsoft muốn bạn nghĩ. Họ nói rằng một số loại trình điều khiển nhất định phải được ký kết WHQL, nếu không chúng sẽ không hoạt động và việc ký kết Authenticode chỉ hoạt động đối với những người không có quy trình WHQL.

Hóa ra bạn CÓ THỂ Authenticode gói tài xế dấu, ngoại trừ bạn phải chăm sóc và ký chúng như bạn sẽ kernel mã bây giờ, có nghĩa là nhận được giấy chứng nhận chéo chính xác cho bạn CA (từ Cross-Certificates for Kernel Mode Code Signing, có tấn chúng bây giờ, bao gồm StartCom, mà tôi có (lớp 2, 60 đô la Mỹ trong hai năm, nhưng chúng không thể được đánh dấu thời gian) Cung cấp chứng chỉ chéo này (không giống như chứng chỉ tự ký của CA hoặc chứng chỉ trung gian của họ). chỉ có sẵn trên trang MSDN đó) đến SignTool qua nút chuyển đổi /ac.

Sau đó, sử dụng SignTool xác minh với công tắc /kp để xem liệu y ou chữ ký họ đúng cách. Xác minh SignTool mà không có bất kỳ công tắc nào YÊU CẦU rằng các tệp .cat được WHQL ký, trong khi khóa chuyển đổi /pa, có vẻ như đã được chấp nhận trước đây, bây giờ là quá lỏng lẻo và chỉ áp dụng cho ký kết không phải trình điều khiển (như các tệp EXE, ClickOnce, v.v.).

Nếu bạn không muốn có chứng chỉ ký kết cấp hạt nhân của riêng bạn, điều này dễ dàng hơn trước đây, trước khi nó bị giới hạn đối với những siêu đắt tiền của VeriSign và 200 đô la Mỹ một năm. Microsoft thấy rằng không có nhiều người viết khai thác hạt nhân cấp cho các hệ thống x64), bạn có thể làm cho một gốc tự ký CA, đã cài đặt driver của bạn cài đặt nó vào "Trusted root Certification Authority" cửa hàng của LocalMachine (xem certmgr.exe), sau đó cài đặt tệp .cat được ký bởi điều đó. Tất nhiên, vì đây không phải là chứng chỉ mã cấp hạt nhân, bạn PHẢI chỉ sử dụng các tệp .sys đã có chứng chỉ mã cấp hạt nhân nhúng từ người khác (có nghĩa là bạn chỉ có thể sửa đổi tệp .inf trong gói trình điều khiển) . Rõ ràng, có một số lỗ hổng cho phép các chứng chỉ tự ký để ký các tệp .cat (nếu bạn tạo CA của riêng bạn, sau đó đã ký chứng chỉ với nó, sau đó đã ký các tệp .cat của bạn với nó, nó sẽ không hoạt động như điều này).

Đối với một bộ mà thực hiện điều này cho tất cả các gói INF tài xế nó làm cho, xem libwdi, và cách các chứng chỉ tự ký của họ trên các tập tin con mèo cho phép cài đặt trên Windows 8.  

EDIT2:

Removed CERTUM chứng chỉ nhà phát triển "nguồn mở" đề cập đến, vì nó không được chứng nhận chéo bởi Microsoft (một trong những bạn nhận được không phải là chứng chỉ TRUSTED NETWORK, mà Microsoft được chứng nhận chéo).

+0

* Tôi chắc rằng bạn đã sai về điều đó. * Tôi nhận được chứng chỉ bình thường từ Go Daddy và nó hoạt động chính xác trên tệp INF của tôi trong bản xem trước Windows 8. Tôi không phải nộp bất cứ điều gì cho Microsoft. Nếu bạn muốn được trợ giúp, vui lòng viết câu hỏi StackOverflow và cung cấp thêm chi tiết cho tôi. Để biết ý tưởng về loại chi tiết bạn nên cung cấp, hãy xem http://stackoverflow.com/questions/12291461/signed-inf-driver-works-on-the-computer-where-it-was-signed-not-others Xin vui lòng gửi bình luận ở đây hoặc một cái gì đó để tôi biết khi bạn đã viết câu hỏi của bạn. –

+0

Tôi đã cập nhật câu trả lời của mình với khoảng 3 ngày có giá trị thông tin dùng thử và lỗi, và tôi đã quản lý để có được cả chứng chỉ tự ký đã ký .cat tệp đang chạy và tệp xác thực đã ký của tôi đã ký (trên cả win8 và cũ hơn windows versions) – rajkosto

+1

Đó là '/ ac', not '/ ca'. Đó là '/ pa' không phải'/pe'. Ngoài ra, tôi đã có thể ký thành công các gói trình điều khiển đơn giản chỉ bao gồm tệp INF và CAT mà không sử dụng chứng chỉ chéo; điều quan trọng nhất là chuỗi tin cậy của bạn quay trở lại thứ gì đó trong Cửa hàng chứng nhận gốc tin cậy. Tôi trích dẫn trải nghiệm cá nhân và http://msdn.microsoft.com/en-us/library/windows/hardware/gg487332.aspx làm nguồn của tôi cho điều đó. Ngoài ra, để xác minh các gói trình điều khiển, tôi nghĩ rằng '/ pa' là tùy chọn thích hợp để sử dụng vì đó là cách chúng thực hiện trong kmcs_walkthrough.doc. –