Treiber signieren?
-
Hi,
ich habe hier ein kleines USB-Gerät, welches im System als COM-Port auftaucht. Der "Treiber" dazu besteht aus einem .inf-File, in welchem im wesentlichen auf usbser.sys verweist (welches wohl zu Windows gehört!?).
Das ganze gehört zu einem freien Projekt, das Budget dafür bewegt sich also um 0 herum. Jetzt sieht es so aus, als ob dieser Treiber unter Windows 8.1/64 Bit nicht akzeptiert wird, scheinbar muss das Ding dort jetzt zwingend signiert sein.
Watt nu? Wie kommt man an so ein Zertifikat, was kostet das und wie wende ich das auf diese .inf-Datei an?
Und vor allem: welche preisgünstigen Lösungen gibt es, um an so ein Zertifikat ranzukommen? Es muss nur funktionieren, ich brauche keine Windowsmicrosoftwasauchimmerlogo-Kompatibilität.
Danke!
-
Zorg79 schrieb:
als ob dieser Treiber unter Windows 8.1/64 Bit nicht akzeptiert wird, scheinbar muss das Ding dort jetzt zwingend signiert sein.
Um einen unsignierten Treiber zu installieren muss man neu starten. Es gibt da irgendwo unter "Optionen für erweiterten Start" den Eintrag "Erzwingen der Treibersignatur deaktivieren". Kann auch etwas anders heißen.
-
Du mußt den Treiber nicht zwingend signieren; du kanst auch im TESTSIGNING-Modus booten und dann den Treiber installieren [1] [2]. Der Treiber sollte installiert bleiben, auch wenn du beim nächsten Mal wieder im normalen Modus bootest.
Wenn du den Treiber unbedingt signieren willst, findest du unter [3] eine kursorische Anleitung. Du brauchst dazu nur das DDK.
[1] http://msdn.microsoft.com/en-us/library/windows/hardware/ff553484%28v=vs.85%29.aspx
[2] http://stackoverflow.com/questions/18950641/how-do-i-use-unsigned-driver-on-windows-7-8-8-1especially-64-bit
[3] [url]https://groups.google.com/forum/#!topic/ss4200/nxhwGV6Qjz0[/url]
-
Also erstmal kann man auch nicht signierte Treiber testen. Dazu muss man Windows bloss in den "driver test signing mode" schalten. Warnung beim Installieren kommt immer noch, aber wenn man die alle mit "trotzdem" wegklickt, dann lädt Windows den Treiber.
Und usbser.sys, als Teil von Windows, ist bereits signiert. Was fehlt ist lediglich ein signiertes .inf File, und das ist IIRC nicht unbedingt nötig. D.h. wenn das .inf File nicht signiert ist dann bekommst du grosse böse rote Warnmeldungen, aber die kannst du immer noch mit dem "trotzdem" Button bestätigen. Und dann sollte Windows den Treiber trotzdem installieren und dann auch laden. WENN alle .sys Files selbst gültig signiert sind.
----
Ansonsten, falls es denn wirklich nicht anders geht...
Dann brauchst du halt ein "driver signing certificate".
Da gibt es etliche Anbieter, google mal nach "driver signing certificate".
Eines der günstigsten Angebote die wir damals gefunden haben war von Digicert: https://www.digicert.com/code-signing/driver-signing-certificates.htmDann musst du erstmal alle noch nicht passend signierten .sys Files mit diesem Zertifikat signieren.
Dann musst du ein passendes .inf File für deinen Treiber vorbereiten, dann ein .cat File aus dem .inf File erstellen und dann das .cat File signieren.Detailierte Schritt für Schritt Anleitung kannst du dir dann im Falle des Falles ergoogeln.
-
audacia schrieb:
Du mußt den Treiber nicht zwingend signieren; du kanst auch im TESTSIGNING-Modus booten und dann den Treiber installieren [1] [2]. Der Treiber sollte installiert bleiben, auch wenn du beim nächsten Mal wieder im normalen Modus bootest.
Das Installieren ist nicht das Problem. Installiert bleibt der Treiber schon, aber installiert bekommt man ihn auch ohne den Test-Signing Mode zu aktivieren.
Bloss der Kernel weigert sich den Treiber zu laden sobald der Test-Signing Mode nicht mehr aktiv ist.
D.h. sobald du ohne Test-Signing Mode bootest werden .sys Files ohne passende Signatur einfach nicht mehr geladen.
-
hustbaer schrieb:
Das Installieren ist nicht das Problem. Installiert bleibt der Treiber schon, aber installiert bekommt man ihn auch ohne den Test-Signing Mode zu aktivieren.
Bloss der Kernle weigert sich den Treiber zu laden sobald der Test-Signing Mode nicht mehr aktiv ist.
D.h. sobald du ohne Test-Signing Mode bootest werden .sys Files ohne passende Signatur einfach nicht mehr geladen.Das ist mir neu, aber bei näherem Hinsehen klingt das plausibel. In der Regel macht man sowas ja nicht mit unsignierten Treibern, sondern mit signierten, für die man aber die INF-Datei anpassen muß, weil sie die Installation unter NT > 6.1 nicht vorsieht. Und dann paßt eben die Signatur der INF-Datei nicht mehr (die der Treiber-Binaries allerdings schon). Um den Treiber über die manipulierte INF-Datei zu installieren, geht man eben in den TESTSIGNING-Mode.
-
Hehe, das ist ganz sicher so. Wir entwickeln selbst Treiber (also wirklich eigene selbst compilierte .SYS Files), hatte genug Gelegenheit mich damit rumzuspielen.
(Bzw. mittlerweile ist es nur mehr ein solcher Treiber, an dem auch in den letzten Jahren kaum mehr was gemacht wurde.)audacia schrieb:
Um den Treiber über die manipulierte INF-Datei zu installieren, geht man eben in den TESTSIGNING-Mode.
IIRC muss man das eben nichtmal, sondern nur oft genug in roten bösen Fensterlis auf "ich will trotzdem" klicken.
Wäre auch komisch wenn Windows das sonst nicht erlauben würde. Schliesslich ist das .INF File ja nur zum Installieren (nicht aber zu nutzen) des Treibers nötig, und Installieren bedeutet eigentlich bloss ein paar Files rumzukopieren und ein paar Registry-Einträge anzulegen.
Das könnte man auch ganz ohne .INF File machen, wäre also komisch wenn Windows sich da kategorisch weigern würde ein unsigniertes .INF File zu akzeptieren.
-
Gibt es einen Unterschied zwischen diesem "Testsigning Mode" und der von mir genannten Starteinstellung ?
Konkrete Erfahrung: Beim Linux Board Beaglebone Black war früher der Treiber nicht signiert, bevor diese Signatur gespendet wurde. Das Board wird von PC über USB versorgt und erscheint dort als USB-Stick (ohne Treiber) und serielle Schnittstelle und Netzwerkadapter (beide nur nach Treiberinstallation).
Es genügte einmal diesen Treiber mit dieser Startoption zu installieren. Danach funktionierte er auch nach normalen Starts ohne Probleme.
-
hustbaer schrieb:
Hehe, das ist ganz sicher so. Wir entwickeln selbst Treiber (also wirklich eigene selbst compilierte .SYS Files), hatte genug Gelegenheit mich damit rumzuspielen.
Ich glaub es dir ja
Mir lag nur daran, es in Einklang mit meiner (bescheidenen Anwender-)Erfahrung bringen.
hustbaer schrieb:
audacia schrieb:
Um den Treiber über die manipulierte INF-Datei zu installieren, geht man eben in den TESTSIGNING-Mode.
IIRC muss man das eben nichtmal, sondern nur oft genug in roten bösen Fensterlis auf "ich will trotzdem" klicken.
Habe ich zumindest auf dem direkten Weg nie geschafft. Alle mir zugänglichen Treiber-Installationsmethoden weigern sich direkt, die INF-Datei überhaupt anzusehen, wenn die Signatur nicht stimmt.
Aber es muß tatsächlich irgendwelche Kombinationen aus Kompatibilitäts-Shims und Treiber-Installationsprogrammen geben, die (unmanipulierte, korrekt signierte) INF-Dateien für ältere Windowsversionen trotzdem installieren. Bei dem Switchable-Graphics-Treiber für mein Notebook habe ich das beobachtet. Lustigerweise kann man dem Installer einen beliebigen Treiber für die integrierte Intel-Graphik unterschieben, der sich einzeln nicht installieren läßt; der Switchable-Graphics-Installer installiert ihn klaglos mit.
nn schrieb:
Gibt es einen Unterschied zwischen diesem "Testsigning Mode" und der von mir genannten Starteinstellung ?
Nein, das ist nur ein bequemer Weg, nur für den nächsten Reboot in den TESTSIGNING-Mode zu gehen, analog zum abgesicherten Modus.
nn schrieb:
Konkrete Erfahrung: [...]
hustbaer wird uns jetzt sicher erklären, wie das sein kann
-
audacia|off schrieb:
nn schrieb:
Konkrete Erfahrung: [...]
hustbaer wird uns jetzt sicher erklären, wie das sein kann
Noch mal kurz zum Vorgehen:
- Auf die Kachelansicht gehen
- Optionen ins Suchfenster eingeben, Windows zeigt "Optionen für erweiterten ..."
- Das auswählen und auf der nächsten Seite "Jetzt neu starten" klicken
- Win8 startet neu mit einem Wald von Auswahlen
- Man muss sich jetzt irgendwo nach "Erweiterte Einstellungen" durchkämpfen
- Da gibt es eine ganze Liste darunter "Erzwingen der Treibersignatur deaktivieren"Wenn man das macht kann man USB-Geräte installieren, ohne dass Win8 nach der Signatur fragt. So installierte Geräte gehen später immer noch, bei neuen Geräten fragt Windows aber wieder nach der Signatur.
-
nn schrieb:
Wenn man das macht kann man USB-Geräte installieren, ohne dass Win8 nach der Signatur fragt. So installierte Geräte gehen später immer noch, bei neuen Geräten fragt Windows aber wieder nach der Signatur.
Das kann nur sein wenn diese Geräte keine eigenen .SYS Files brauchen, sondern ihr "Treiber" quasi nur aus einem .INF File besteht. Und im .INF File steht ja bloss beschrieben welche Änderungen am System durchgeführt werden müssen um den Treiber zu installieren. Also eben Files kopieren + Registry Einträge schreiben. Diese Änderungen bleiben natürlich nach Deaktivieren des Test-Signing Mode erhalten.
Nicht signierte .SYS Files werden aber definitiv nicht mehr geladen wenn man wieder ohne Test-Signing Mode bootet. Der Check wird direkt vom Kernel beim Laden des Treiber-Files ausgeführt. U.a. daher braucht man auch ein sog. "Cross-Certificate", damit der Kernel die Signatur prüfen kann ohne online gehen zu müssen oder sich auf irgendwelche installierten Zertifikate zu verlassen zu.
ps: Du kannst im Device-Manager, unter Device->Kontextmenü->Properties->Driver->Driver Details gucken. Da sind alle .SYS Files die ein Gerät benötigt aufgelistet. Und wenn du eins auswählst steht dabei von wem das File stammt ("Provider").
-
audacia|off schrieb:
hustbaer schrieb:
audacia schrieb:
Um den Treiber über die manipulierte INF-Datei zu installieren, geht man eben in den TESTSIGNING-Mode.
IIRC muss man das eben nichtmal, sondern nur oft genug in roten bösen Fensterlis auf "ich will trotzdem" klicken.
Habe ich zumindest auf dem direkten Weg nie geschafft. Alle mir zugänglichen Treiber-Installationsmethoden weigern sich direkt, die INF-Datei überhaupt anzusehen, wenn die Signatur nicht stimmt.
Vielleicht täuscht mich auch meine Erinnerung.
Wobei ich es wie gesagt komisch fände, weil man die im .INF File beschriebenen Änderungen ja theoretisch, wenn man weiss was man machen muss, alle "mit Hand" machen könnte.
-
hustbaer schrieb:
Das kann nur sein wenn diese Geräte keine eigenen .SYS Files brauchen, sondern ihr "Treiber" quasi nur aus einem .INF File besteht.
Es handelt sich um den Linux-USB-Gadget Treiber, mit dem sich ein Linux Rechner als USB-Gerät am PC meldet, u.a. als USB-Ethernet-Interface.
-
nn schrieb:
hustbaer schrieb:
Das kann nur sein wenn diese Geräte keine eigenen .SYS Files brauchen, sondern ihr "Treiber" quasi nur aus einem .INF File besteht.
Es handelt sich um den Linux-USB-Gadget Treiber, mit dem sich ein Linux Rechner als USB-Gerät am PC meldet, u.a. als USB-Ethernet-Interface.
Schön.
Und was sagt mir das jetzt?
-
hustbaer schrieb:
Und was sagt mir das jetzt?
Das der Fragesteller da nachschauen kann, wie der das macht. Zu den Geräten, die da am PC installiert werden, gehört ja auch eine serielle Schnittstelle.
Der Fragesteller hat auch ein serielles Gerät mit inf-Datei. Dann sollte es ja eigentlich auch so gehen.
-
Wieso zitierst du dann mich wenn sich dein Beitrag an den OP richtet?
Davon abgesehen hab' ich das bereits in meinem ersten Beitrag hier geschrieben.
(Gut, dort bin ich noch davon ausgegangen dass man so ein .INF File, wenn es wirklich nur das ist, mit "trotzdem" Klicken auch ohne Test-Signing Mode installiert bekommt. Was wohl doch nicht so ist. Aber den Punkt hatten wir mmn. auch schon ausführlich genug behandelt.)
-
audacia|off schrieb:
Bei dem Switchable-Graphics-Treiber für mein Notebook habe ich das beobachtet. Lustigerweise kann man dem Installer einen beliebigen Treiber für die integrierte Intel-Graphik unterschieben, der sich einzeln nicht installieren läßt; der Switchable-Graphics-Installer installiert ihn klaglos mit.
Da muss ich jetzt nochmal nachfragen...
Ein Kumpel von mir hat nämlich ein Problem mit nem OPTIMUS Teil - ein Programm leakt sobald es mit der NVIDIA Karte läuft, wenns mit der Intel läuft leakt es nicht. Dummerweise braucht er die Performance von der NVIDIA Karte.
Von daher würde mich interessieren ob es da irgendwelche alternativen Treiber gibt ausser dem OPTIMUS vom Hersteller (ASUS) die man probieren könnte. Und dummerweise ist das Ding so verdrahtet dass der Grafikausgang am Intel dran hängt, also kann man auch keine normalen "nicht-OPTIMUS" Treiber verwenden. Zumindest nicht so ohne weiteres.
(Das Leak ist auch in einer OPTIMUS-Shim-DLL, ist also ziemlich sicher irgend ein Problem mit der OPTIMUS-Sache.)Falls du da irgend einen Tip für mich hättest wäre ich sehr froh.
Geht nämlich um *einige* Geräte auf denen die Software läuft, und alle Geräte gegen nicht-OPTIMUS Teile zu tauschen wäre extrem teuer.