Bắt trình điều khiển USB MSP430 được ký bởi Microsoft


11

Tôi đang phát triển một sản phẩm sử dụng vi điều khiển MSP430 với mô-đun USB tích hợp. Tôi đã nhận được một PID từ Texas Cụ và sử dụng các công cụ của họ để tạo các mô tả, cũng như tệp .inf để cài đặt phần mềm trình điều khiển. Vấn đề rõ ràng là do tính chất tùy chỉnh của các tệp này, một cửa sổ bật lên được hiển thị (trên Windows 7) khi cắm cáp USB cảnh báo người dùng rằng trình điều khiển không được ký. Tôi tin rằng trên Windows 8 và Windows 10, nó chỉ đơn giản là chặn nó và hoàn toàn không cho biết điều này với người dùng.

Vì đây là sản phẩm đầy đủ tính năng mà công ty tôi dự định phát hành, chúng tôi cần phải có chứng chỉ trình điều khiển (tôi tin ở dạng tệp .cat?) Mà chúng tôi có thể cung cấp cho khách hàng để họ có thể cài đặt thiết bị phần mềm điều khiển không có vấn đề.

Tôi đã xem qua khá nhiều tài liệu của Microsoft (đáng chú ý nhất là tài liệu này ) đang cố gắng nắm bắt những gì cần thiết để có được một trình điều khiển được ký, nhưng thật không may, điều này hiện đang ở trên đầu tôi.

Đây là những gì tôi nghĩ rằng tôi hiểu cho đến nay:

  • Tôi cần gửi trình điều khiển của mình (tệp .inf?) Cho cơ quan cấp chứng chỉ do Microsoft ủy quyền (CA). Có một số trong số này, vì vậy tôi sẽ cần tìm một trong những dấu hiệu trình điều khiển.
  • Sau khi chọn CA, thông thường tôi sẽ phải trả một khoản phí hàng năm (phổ biến nhất là 1, 2 hoặc 3 năm) cho dịch vụ của họ. Bất kỳ trình điều khiển nào tôi tạo trong thời gian này sẽ được ký vĩnh viễn, ngay cả khi dịch vụ hết hạn. Nếu tôi muốn thay đổi trình điều khiển hoặc tạo một trình điều khiển mới sau khi dịch vụ hết hạn, tôi sẽ cần mua dịch vụ thêm 1, 2 hoặc 3 năm nữa.
  • Sau khi trả phí, CA sẽ tạo tệp .cat là chứng chỉ đảm bảo rằng trình điều khiển tôi đã cung cấp cho họ sẽ không bị thay đổi. Nếu không, nó sẽ không khớp với tệp .cat và một lỗi sẽ xuất hiện trong khi cài đặt

Điều này có đúng không? Có nguy cơ nghe có vẻ như tôi đang tìm kiếm đề xuất cho các CA cụ thể (tôi không phiền bạn), tôi có thể tìm danh sách các CA có thể làm chứng nhận này cho tôi ở đâu? Thậm chí tốt hơn sẽ là các trang web và / hoặc giá của họ cho các thời hạn dịch vụ khác nhau. Có ai ở đây có kinh nghiệm trực tiếp nhận trình điều khiển cho một sản phẩm dựa trên vi điều khiển USB có chữ ký của CA không, ai có thể giúp tôi hiểu và vượt qua quá trình này? Tôi đã đăng lên các diễn đàn MSDN nhưng có vẻ như đã chết ở đó - Đã hai ngày và chủ đề của tôi chỉ có một số lượt xem.


Trình điều khiển của bạn có phải là một tính năng đầy đủ, cần thực thi mã trong chế độ kernel hay chỉ là một tệp inf? Nếu nó chỉ là một tệp inf, thì trình điều khiển tích hợp (tệp .sys) nào nó tải?
Jack B

Đây là nơi tôi thất bại, tôi không biết nhiều về hoạt động bên trong của PC và cách các trình điều khiển hoạt động. Thiết bị của tôi được thiết kế xung quanh MSP430 với mô-đun USB tích hợp. Thiết bị này chỉ đơn giản là có giao diện CDC qua kết nối USB, vì vậy tất cả những gì nó làm là mở một cổng COM ảo
DerStrom8

Theo thiết kế hiện nay, nó thực sự nằm trên bảng phát triển và khi tôi thử cài đặt thiết bị bằng tệp .inf, tôi nhận được lỗi tiêu chuẩn từ Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . Trong thời gian chờ đợi để thử nghiệm, tôi vừa sử dụng các tệp .inf và .cat được cung cấp với một trong các ví dụ CDC từ gói MSP430Ware, nhưng khi tôi phát hành sản phẩm này, tôi sẽ không thể làm điều đó nữa. Nếu tôi không nhầm, điều này không thực thi mã trong chế độ kernal
DerStrom8

1
Tóm lại: Bạn có thể ký với chứng chỉ ký mã thông thường, giá khoảng £ 80 / năm cuối cùng tôi đã xem. Không cần tất cả các công cụ ký kết chéo của Microsoft. Nhưng trên Windows 8.1 và trước đó, nó không đáng tin cậy lắm (chúng tôi không thể vượt qua EN61326 với nó) vì vậy bạn cũng có thể muốn có một giải pháp thay thế được xếp hàng. Nếu không ai đánh bại tôi, tôi sẽ viết câu trả lời sau bữa tối.
Jack B

1
@AdamLawrence Tôi đã quay lại vài giờ sau đó và không thấy rằng tôi cần thêm bất cứ điều gì vào câu trả lời của bạn. Rất tốt bởi tôi
Jack B

Câu trả lời:


16

Thật ra nó không tệ lắm. Tôi đã làm điều này một vài lần tại nơi làm việc, viết và ký một .INF / .CAT cho một USB CDC-ACM-to-I dựa trên Microchip PIC24FJ64GB002 giao diện 2 C .

  • Thiết lập mối quan hệ với cơ quan cấp chứng chỉ. Bạn sẽ cần cung cấp cho họ một số thông tin cơ bản mà họ sẽ xác nhận. Nếu bạn đi Xác thực mở rộng (EV), họ sẽ yêu cầu nhiều hơn nữa, nhưng bạn không cần phải đi quá xa. Thawte, Digicert và Comodo là một số ví dụ về CA.

  • Mua chứng chỉ ký mã Authenticode từ CA. Đây là những gì bạn cần để ký tệp .CAT được liên kết với tệp .INF của bạn. Bạn không cần chứng chỉ chế độ kernel cho cấp độ ký này.

  • Cài đặt chứng chỉ (không cần nói)

  • Tải xuống khung Windows SDKWindows Driver Kit để có các công cụ Microsoft cần thiết (tạo và ký danh mục).

  • Gói và ký tên các trình điều khiển:

    • Sử dụng inf2cat để tạo tệp danh mục (.CAT) cho tệp .INF
    • Sử dụng signtool để ký tập tin danh mục

Từ thời điểm này, bạn có thể tạo một số loại trình cài đặt trình điều khiển hoặc sử dụng dpinst từ SDK để thực hiện tự động cài đặt cơ bản.

EDIT: Ghi chú từ các ý kiến ​​khác nhau dưới đây:

  1. Tạo tệp .INF để tải USBSER.SYS không phải tạo trình điều khiển chế độ lõi - bạn đang sử dụng USBSER.SYS (đã tích hợp, đã ký và đã tin cậy), không tạo ra một cái gì đó mới - và như vậy không yêu cầu ký EV Giấy chứng nhận và chứng nhận WHQL. Một chứng chỉ Authenticode cơ bản là tất cả những gì cần thiết.
  2. Bắt đầu với Windows 10, bạn hoàn toàn không cần .INF đã ký cho các thiết bị USBSER.SYS, vì Windows sẽ tự động nhận các thiết bị USB CDC-ACM (Class_02). Họ cũng đã viết lại trình điều khiển từ đầu và hiện tại nó hoạt động tốt hơn nhiều (thậm chí nó còn xử lý việc xóa thiết bị không mong muốn và chèn lại mà không khóa cổng COM ảo, một con số khổng lồ cộng !). Điều đó nói rằng, bạn vẫn có thể sử dụng phương pháp tiếp cận trình điều khiển đã ký nếu bạn thực sự muốn - trình điều khiển đã ký sẽ vẫn 'hoạt động'. Vẫn còn rất nhiều Win 8.1 / 8/7 và các máy cũ hơn hiện có nên việc có trình điều khiển đã ký vẫn còn hơi quan trọng đối với các thiết bị USB CDC-ACM.

Mở rộng hơn nữa về câu hỏi của bạn:

  • Bạn không gửi bất cứ điều gì để ký vào CA - bạn mua chứng chỉ ký mã, cài đặt nó trên máy và thực hiện xác nhận .INF và tự ký.
  • Bạn không cần phải trả một khoản phí hàng năm cho mỗi se - tuy nhiên, chứng chỉ bạn mua sẽ có thời hạn hiệu lực 1, 2 hoặc 3 năm. Khi chứng chỉ hết hạn, bạn sẽ cần mua một cái mới để có thể tiếp tục ký - mọi thứ đã ký trước đó sẽ vẫn còn hiệu lực nhưng bạn mất khả năng ký những thứ mới.
  • .CAT là hàm băm cho .INF - mọi thay đổi đối với .INF sẽ được phát hiện và chứng chỉ sẽ không còn hiệu lực, điều đó có nghĩa là .INF sẽ hoạt động như một dấu không dấu.

4
CL.

4
Đây là một câu trả lời tuyệt vời, thực sự rất hữu ích. Bạn chắc chắn làm cho âm thanh dễ dàng hơn nhiều so với tôi mong đợi. Tôi sẽ xem xét này. Trong khi đó tôi sẽ chấp nhận câu trả lời này vì các bước rõ ràng, đơn giản được cung cấp. Chúc mừng!
DerStrom8

2
@ poizan42 Đây không phải là trình điều khiển chế độ kernal. Đây là một thiết bị USB CDC đơn giản chỉ mở một cổng COM ảo. Không thực thi mã chế độ kernal được thực hiện.
DerStrom8

1
Chỉ muốn theo dõi. Các bước này hoạt động hoàn hảo chỉ với một cảnh báo: inf2cat.exe không đi kèm với SDK Windows, bạn cũng phải cài đặt Bộ điều khiển Windows (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ Sầu . Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn, giờ đây tôi có thể cài đặt phần mềm trình điều khiển của mình mà không có bất kỳ cảnh báo nào - nó cho thấy công ty của tôi là nhà xuất bản như mong đợi
DerStrom8

2
Trả lời sửa đổi. Cảm ơn vì đã chỉ ra điều hiển nhiên (đã vài năm kể từ khi tôi cài đặt bộ công cụ)
Adam Lawrence
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.