Uzyskiwanie MSP430 USB Driver podpisany przez Microsoft

11

Rozwijam produkt, który wykorzystuje mikrokontroler MSP430 z wbudowanym modułem USB. Otrzymałem PID od Texas Instruments i użyłem ich narzędzi do wygenerowania deskryptorów, a także pliku .inf do zainstalowania oprogramowania sterownika. Oczywistym problemem jest to, że ze względu na niestandardowy charakter tych plików, po podłączeniu kabla USB wyświetlane jest okienko wyskakujące, które ostrzega użytkownika, że ​​sterownik nie jest podpisany. Wierzę, że w Windows 8 i Windows 10 po prostu go blokuje i wcale tego nie wskazuje użytkownikowi.

Ponieważ jest to w pełni funkcjonalny produkt, który moja firma planuje wydać, musimy uzyskać certyfikat sterownika (wierzę w postaci pliku .cat?), Który możemy dostarczyć klientowi, aby mógł zainstalować urządzenie oprogramowanie sterownika bez problemu.

Przeszedłem już sporo dokumentacji Microsoft (przede wszystkim tego dokumentu ), próbując zrozumieć, co jest wymagane, aby uzyskać podpis kierowcy, ale niestety w tej chwili jest to nad moją głową.

Wydaje mi się, że rozumiem do tej pory:

  • Muszę przesłać mój sterownik (plik .inf?) Do urzędu certyfikacji autoryzowanego przez Microsoft (CA). Istnieje wiele takich, więc musiałbym znaleźć taki, który podpisuje sterowniki.
  • Po wybraniu urzędu certyfikacji na ogół będę musiał uiścić roczną opłatę (najczęściej za 1, 2 lub 3 lata) za ich obsługę. Wszystkie sterowniki, które wygeneruję w tym czasie, zostaną podpisane na stałe, nawet po wygaśnięciu usługi. Jeśli chcę zmienić sterownik lub utworzyć nowy po wygaśnięciu usługi, będę musiał kupić usługę na kolejne 1, 2 lub 3 lata.
  • Po uiszczeniu opłaty urząd certyfikacji wygeneruje plik .cat, który jest certyfikatem zapewniającym, że sterownik, który im podałem, nie zostanie zmieniony. Jeśli tak, nie będzie już zgodny z plikiem .cat, a podczas instalacji pojawi się błąd

Czy to jest poprawne? Ryzykując, że zabrzmi to tak, jakbym szukał rekomendacji dla konkretnych urzędów certyfikacji (nie jestem, mam na myśli), gdzie mogę znaleźć listę urzędów certyfikacji, które są w stanie zrobić dla mnie ten certyfikat? Jeszcze lepsze byłyby ich strony internetowe i / lub ceny dla różnych czasów trwania usługi. Czy ktoś tutaj miał bezpośrednie doświadczenie w uzyskaniu sterownika dla produktu opartego na mikrokontrolerze USB podpisanego przez urząd certyfikacji, który byłby w stanie pomóc mi zrozumieć i przejść przez ten proces? Już pisałem na forach MSDN, ale wydaje się tam dość martwy - minęły dwa dni, a mój wątek ma tylko kilka poglądów.

DerStrom8
źródło
Czy twój sterownik to w pełni funkcjonalna funkcja, która musi uruchamiać kod w trybie jądra, czy jest to tylko plik inf? Jeśli jest to tylko plik inf, jakie wbudowane sterowniki (pliki .sys) ładuje?
Jack B,
To tam zawodzę, nie wiem wiele o wewnętrznych działaniach komputerów i o tym, jak działają sterowniki. Moje urządzenie zostało zaprojektowane wokół MSP430 z wbudowanym modułem USB. To urządzenie ma po prostu interfejs CDC przez połączenie USB, więc wystarczy otworzyć wirtualny port COM
DerStrom8,
Ponieważ projekt znajduje się teraz, jest właściwie na płycie programistycznej, a kiedy próbuję zainstalować urządzenie za pomocą pliku .inf, otrzymuję standardowy błąd z systemu Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . W międzyczasie testowałem właśnie pliki .inf i .cat dostarczone z jednym z przykładów CDC z pakietu MSP430Ware, ale kiedy wypuszczę ten produkt, nie będę już w stanie tego zrobić. Jeśli się nie mylę, to nie wykonuje kodu w trybie
jądra
1
W skrócie: możesz to podpisać zwykłym certyfikatem do podpisywania kodu, którego cena wyglądała na około 80 funtów rocznie. Nie ma potrzeby wykonywania wszystkich czynności związanych z podpisywaniem krzyżowym firmy Microsoft. Ale w systemie Windows 8.1 i wcześniejszych nie jest on bardzo niezawodny (nie mogliśmy z nim przejść przez EN61326), więc możesz chcieć mieć również alternatywną linię. Jeśli nikt mnie nie pobije, napiszę odpowiedź po obiedzie.
Jack B,
1
@AdamLawrence Wróciłem kilka godzin później i nie widziałem, że muszę coś dodać do twojej odpowiedzi. Tak dobrze przeze mnie.
Jack B

Odpowiedzi:

16

Właściwie nie jest tak źle. Zrobiłem to kilka razy w pracy, pisanie i podpisywanie INF / .cat dla USB mikroczipa PIC24FJ64GB002 opartej CDC-ACM-do-I 2 interfejs C.

  • Nawiąż relację z urzędem certyfikacji. Będziesz musiał podać im podstawowe informacje, które zweryfikują. Jeśli wybierzesz opcję Extended Validation (EV), będą prosić o wiele więcej, ale nie powinieneś iść tak daleko. Thawte, Digicert i Comodo to tylko niektóre przykłady CA.

  • Kup certyfikat podpisywania kodu Authenticode od urzędu certyfikacji. To jest to, czego potrzebujesz, aby podpisać plik .CAT skojarzony z plikiem .INF. Do tego poziomu podpisywania nie potrzebujesz certyfikatu trybu jądra.

  • Zainstaluj certyfikat (to oczywiste)

  • Pobierz platformę Windows SDK i zestaw sterowników Windows, aby uzyskać potrzebne narzędzia Microsoft (generowanie i podpisywanie katalogu).

  • Spakuj i podpisz sterowniki:

    • Użyj inf2cat, aby wygenerować plik katalogu (.CAT) dla pliku .INF
    • Użyj signtool do podpisania pliku katalogu

Od tego momentu możesz stworzyć instalator sterowników lub użyć dpinst z SDK, aby wykonać podstawową automatyzację instalacji.

EDYCJA: Uwagi z różnych komentarzy poniżej:

  1. Utworzenie pliku .INF w celu załadowania USBSER.SYS nie tworzy sterownika w trybie jądra - używasz USBSER.SYS (wbudowanego, podpisanego i zaufanego już), nie tworzysz czegoś nowego - i jako taki nie wymaga podpisywania EV certyfikat i certyfikat WHQL. Wystarczy podstawowy certyfikat Authenticode.
  2. Począwszy od systemu Windows 10, wcale nie potrzebujesz podpisanego pliku .INF dla urządzeń USBSER.SYS, ponieważ system Windows automatycznie odbierze urządzenia USB CDC-ACM (Class_02). Przepisali również sterownik od zera i działa teraz znacznie lepiej (obsługuje nawet nieoczekiwane usuwanie urządzeń i ponowne wstawianie bez blokowania wirtualnego portu COM, co jest ogromnym plusem!). To powiedziawszy, możesz nadal używać podejścia ze znakiem kierowcy, jeśli naprawdę chcesz - podpisany sterownik będzie nadal „działać”. Wciąż istnieje wiele wersji Win 8.1 / 8/7 i starszych maszyn, więc posiadanie podpisanego sterownika jest nadal nieco ważne dla urządzeń USB CDC-ACM.

Dalsze poszerzanie twoich pytań:

  • Nie przesyłasz niczego do podpisania w urzędzie certyfikacji - kupujesz certyfikat podpisu kodu, instalujesz go na komputerze i sam weryfikujesz .INF i podpisujesz się.
  • Nie musisz płacić rocznej opłaty per se - jednak zakupiony certyfikat będzie miał okres ważności 1, 2 lub 3 lata. Po wygaśnięciu certyfikatu musisz kupić nowy, aby móc nadal podpisywać - wszystkie wcześniej podpisane pozostaną ważne, ale stracisz możliwość podpisywania nowych dokumentów.
  • .CAT jest skrótem dla .INF - wszelkie zmiany w .INF zostaną wykryte, a certyfikat przestanie być ważny, co oznacza, że ​​.INF zachowa się jak niepodpisany.
Adam Lawrence
źródło
4
Więcej informacji: Adafruit's How to Sign Windows Drivers & Executables .
CL.
4
To doskonała odpowiedź, bardzo pomocna. Na pewno sprawisz, że zabrzmi to znacznie łatwiej niż się spodziewałem. Przyjrzę się temu. W międzyczasie przyjmuję tę odpowiedź ze względu na jasne, proste kroki. Twoje zdrowie!
DerStrom8,
2
@ poizan42 To nie jest sterownik trybu jądra. Jest to proste urządzenie USB CDC, które otwiera tylko wirtualny port COM. Nie jest wykonywane wykonywanie kodu w trybie jądra.
DerStrom8,
1
Chciałem tylko kontynuować. Te kroki działały idealnie tylko z jednym zastrzeżeniem: inf2cat.exe nie jest dostarczany z zestawem Windows SDK, musisz również zainstalować zestaw sterowników Windows (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ ... . Bardzo dziękuję za pomoc, teraz mogę zainstalować oprogramowanie sterownika bez żadnych ostrzeżeń - pokazuje moją firmę jako wydawcę zgodnie z oczekiwaniami
DerStrom8,
2
Odpowiedź zmieniona. Dzięki za zwrócenie uwagi na oczywiste (minęło kilka lat, odkąd zainstalowałem łańcuchy narzędzi)
Adam Lawrence