2012-05-25 14 views
19

Trabajo para una empresa que vende dispositivos USB y proporciona controladores para ellos.En Windows 8, ¿los archivos del controlador INF de terceros requieren una firma?

En Windows 7, puede instalar y usar archivos de controlador INF sin firmar para dispositivos USB, siempre que no agreguen ningún código al kernel. Nuestra empresa utiliza controladores genéricos proporcionados por Microsoft (usbser.sys y winusb.sys), por lo que nunca tuvimos que firmar nuestros paquetes de controladores.

Sobre la base de un informe de uno de nuestros clientes y de otra pregunta desbordamiento de pila What changed in the driver signature requirements for Windows 8? y the Arduino forum, suena como el Windows 8 Consumer Preview tiene estrictos requisitos de firma que requieren todos los archivos INF de terceros para lograr la firma. El mensaje de error que las personas están recibiendo al intentar instalar los controladores que funcionaron en Windows   7 es:

El INF de terceros no contiene información de firma digital.

¿Cuál es la palabra oficial de Microsoft que confirma que las firmas seguirán siendo necesarias en la versión final de Windows 8? Una oración o dos de MSDN.com sería suficiente, pero no puedo encontrar nada.

Estoy considerando comprar un certificado de firma, pero antes de pagar $ 200 quiero asegurarme de que realmente lo necesitaré a largo plazo. Es posible que el nuevo requisito de firma esté solo en la vista previa del consumidor y no en la versión real.

+0

Es trivial obtener la vista previa del consumidor. Entonces puedes descubrirlo por ti mismo. Es difícil de creer que no. Además, ¿vendes cosas pero no estás dispuesto a gastar $ 200 por una firma? ¿Qué es eso como una fracción de las ganancias anuales de su compañía? –

+1

Obtener la vista previa del consumidor realmente no ayudaría a tomar esta decisión. Idealmente, me gustaría dar un paso al frente a tiempo y obtener la copia oficial de Windows 8. Y sí, soy frugal. –

+0

Aproximadamente 7 meses después de hacer esta pregunta, escribí un gran artículo explicando todo lo que aprendí sobre el tema: http://www.davidegrayson.com/signing/ En resumen, Windows 8 sí requiere que firme sus archivos INF pero no tiene que ser una firma WHQL; solo tiene que tener una cadena de confianza que se remonta a un certificado en la lista Autoridades de certificación de raíz de confianza. –

Respuesta

17

Para responder a mi propia pregunta: Sí, la versión final de Windows 8 requiere que se firmen todos los archivos INF, pero no es necesario que envíe los controladores al WHQL. Escribí sobre este requisito y mucho más en mi artículo Practical Windows Code and Driver Signing.

+3

artículo realmente útil, gracias – Vicky

7

No solo requiere la firma de archivos INF, sino que también requiere que estén firmados por el certificado WHQL, que no es el mismo que se utiliza para los archivos .sys de archivos incrustados y similares. El uso de mi certificado de firma de código en el archivo INF no funcionó en absoluto. (Mismos problemas que si se deja sin firmar.)

EDIT:

Esto es lo que Microsoft quiere que pienses. Dijeron que ciertas clases de controladores TIENEN que estar firmados por WHQL, de lo contrario no funcionarán, y que la firma Authenticode funciona solo para aquellos que no tienen un proceso WHQL.

Resulta que usted PUEDE authenticode paquetes de controladores de señal, excepto en lo que tiene que tener cuidado y firmar ellos como se debería kernel código de ahora, lo que significa obtener el certificado cruzado correcta para su CA (de Cross-Certificates for Kernel Mode Code Signing, hay toneladas de ahora, incluido StartCom, que tengo (clase 2, US $ 60 por dos años, pero no pueden marcarse). Proporcione este certificado cruzado (no es lo mismo que el certificado autofirmado de su CA o su certificado de intermediario. solo disponible en esa página de MSDN) a SignTool a través del interruptor /ac.

Luego use la verificación de SignTool con el interruptor /kp para ver si o cruzada los firmó correctamente. La verificación de SignTool sin conmutadores REQUIERE que los archivos .cat estén firmados por WHQL, mientras que el conmutador /pa, que parecía estar bien antes, ahora es muy poco estricto y solo se aplica a la firma de no controladores (como archivos EXE, ClickOnce, etc.)

Si no desea adquirir su propio certificado de firma de kernel (que ahora es más fácil que antes, francamente, antes de que se limitara a los costosos de VeriSign, y GlobalSign de US $ 200 por año, supongo Microsoft vio que no mucha gente escribió explota a nivel del núcleo para sistemas de 64 bits), se puede hacer una raíz autofirmado CA, haga que su instalador del controlador instalar en la tienda del LocalMachine "certificación raíz de confianza Autoridad" (vea certmgr.exe), y luego instale el archivo .cat que fue firmado por eso. Por supuesto, dado que este no es un certificado de código de nivel de kernel, DEBE usar solo archivos .sys que ya tengan un certificado de código de kernel incrustado de otra persona (lo que significa que solo puede modificar archivos .inf en paquetes de controladores) . Aparentemente, hay alguna laguna que permite que los certificados autofirmados firmen archivos .cat (si usted hizo su propia CA, luego firmó un certificado con ella, luego firmó sus archivos .cat con eso, no funcionará como esta).

por una suite que hace esto para cada paquete INF controlador que hace, ver libwdi, y cómo sus certificados de firma propia en los ficheros cat permiten la instalación en Windows 8.  

Edit2:

Eliminado CERTUM mención de certificado de desarrollador "de código abierto", ya que no tiene certificación cruzada de Microsoft (la que obtiene no es la de Certum TRUSTED NETWORK, que Microsoft certificó de forma cruzada).

+0

* Estoy bastante seguro de que te equivocas al respecto. * Obtuve un certificado normal de Go Daddy y funcionó correctamente en mi archivo INF en la vista previa de Windows 8. No tuve que enviar nada a Microsoft. Si necesita ayuda, escriba una pregunta sobre StackOverflow y proporcione más detalles. Para tener una idea del tipo de detalles que debe dar, consulte http://stackoverflow.com/questions/12291461/signed-inf-driver-works-on-the-computer-where-it-was-signed-not-others Por favor, publique un comentario aquí o algo así para saber cuándo ha escrito su pregunta. –

+0

He actualizado mi respuesta con aproximadamente 3 días, valorizando la información de prueba y error, y he logrado obtener un certificado autofirmado firmado con el archivo .cat, y mi propio archivo .cat firmado y autenticado (tanto en win8 como en versiones anteriores) versiones de Windows) – rajkosto

+1

Es '/ ac', no '/ ca'. Es '/ pa' not'/pe'. Además, he podido firmar con éxito paquetes de controladores simples que solo consistían en un archivo INF y CAT sin usar el certificado cruzado; lo principal que importa es que su cadena de confianza se remonta a algo que está en la tienda de certificación de raíz de confianza. Cito experiencia personal y http://msdn.microsoft.com/en-us/library/windows/hardware/gg487332.aspx como mi fuente para eso. Además, para verificar los paquetes de controladores, creo que '/ pa' es la opción correcta de usar porque así es como lo hacen en kmcs_walkthrough.doc. –

Cuestiones relacionadas