Compartir a través de


Firma de un controlador para la versión pública

Antes de liberar un paquete de controladores al público, se recomienda enviar el paquete para su certificación. Para obtener más información, consulte Certificación de hardware de Windows y [Servicios de panel de hardware](.. /dashboard/index.md. Para enviar un paquete de controladores para la certificación, debe firmar el paquete con un certificado que obtenga de una entidad de certificación de confianza como VeriSign. Para obtener más información, consulte Obtención de un certificado VeriSign. También necesitará un certificado cruzado, que proporciona Microsoft.

Supongamos que ha obtenido un par de archivos de Verisign: un archivo de clave privada (PVK) y un certificado de publicación de software (SPC). Supongamos también que tiene una solución de Microsoft Visual Studio que contiene un proyecto de controlador denominado MyDriver y un proyecto de paquete de controladores denominado MyDriver Package. Para firmar el paquete de controladores, siga estos pasos.

  1. Use la herramienta Pvk2Pfx para crear un certificado de Intercambio de información personal (PFX). La herramienta Pvk2Pfx toma los archivos PVK y SPC como entrada y crea un único archivo PFX. En este ejercicio, supongamos que el archivo PFX se denomina MyCert.pfx.

    Nota Una vez creado el archivo PFX, puede reutilizarlo para otros proyectos de controladores y en otros equipos de desarrollo de controladores.

  2. Para determinar qué certificado cruzado necesita, consulte Certificados cruzados para la firma de código en modo kernel. Compruebe que el certificado cruzado necesario está en $(BASEDIR)\CrossCertificates, donde $(BASEDIR) es el directorio base de los kits de Windows (por ejemplo, c:\Archivos de programa (x86)\Windows Kits\8.0\CrossCertificates). Si el certificado cruzado necesario no está ahí, descargue el certificado cruzado de Microsoft y cópielo en $(BASEDIR)\CrossCertificates.

  3. En Visual Studio, abra la solución que contiene los proyectos MyDriver y MyDriver Package. Si la ventana Explorador de soluciones no está abierta, seleccione Explorador de soluciones en el menú Ver. En el Explorador de soluciones, mantenga pulsado (o haga clic con el botón derecho) el proyecto del paquete MyDriver Package y elija Propiedades.

  4. En las páginas de propiedades del paquete, vaya a Propiedades de configuración > Firma de controladores > General. En la lista desplegable Modo de firma, seleccione Firma de producción. En Certificado de producción, realice una de las acciones siguientes:

    • Escriba la ruta de acceso al certificado de firma (por ejemplo, c:\Certs\MyCert.pfx).

    • Elija Seleccionar de archivo y vaya al certificado de firma.

    • Elija Seleccionar de almacén y elija un certificado que haya importado previamente en un almacén de certificados.

      Nota Para importar un certificado en un almacén, mantenga pulsado (o haga clic con el botón derecho) el archivo de certificado (archivo PFX) y elija Instalar PFX. Siga las instrucciones del Asistente para importación de certificados.

      Nota Si decide usar un certificado diferente más adelante, asegúrese de que el nuevo certificado se importa en el almacén de certificados. Si elige Seleccionar de archivo y busca el nuevo certificado, el nuevo certificado se importará automáticamente en el almacén de certificados. Sin embargo, si escribe manualmente la ruta de acceso al nuevo certificado, no se importará automáticamente en el almacén de certificados. En ese caso, debe seleccionar y mantener pulsado (o haga clic con el botón derecho) el nuevo archivo de certificado y elegir Instalar PFX.

  5. En la página de propiedades Firma de controladores > General, para TimeStampServer, seleccione uno de los servidores de marca de tiempo en la lista desplegable.

    Nota El uso de uno de los servidores de marca de tiempo en la lista desplegable requiere que esté conectado a Internet al compilar el paquete de controladores. Si necesita desconectarse de Internet al compilar el paquete de controladores, desmarque el campo TimeStampServer.

  6. En las páginas de propiedades del paquete, vaya a Propiedades de configuración > Inf2Cat > General. En la lista desplegable Ejecutar Inf2Cat, seleccione .

  7. Cierre las páginas de propiedades del paquete.

  8. Mantenga pulsado (o haga clic con el botón derecho) el proyecto del controlador, MyDriver, y elija Propiedades

  9. En las páginas de propiedades del controlador, vaya a Propiedades de configuración > Firma de controladores > General. Establezca TimeStampServer con el mismo valor que usó en las propiedades del paquete de controladores. Establezca Modo de firma en Firma de producción y establezca Certificado de producción con el mismo valor que usó en las propiedades del paquete de controladores.

  10. Cuando esté listo para compilar el paquete de controladores, pulse F5. Visual Studio firmará automáticamente el paquete y el archivo del controlador. Si ha configurado la implementación, Visual Studio también implementará el paquete de controladores firmados en un equipo de prueba. Consulte Aprovisionamiento de un equipo para la implementación y prueba de controladores (WDK 8.1) para obtener más información.

Visualización de los archivos del paquete de controladores

Después de compilar la solución, vaya a Explorador de archivos, a la carpeta que contiene el paquete de controladores. Uno de los archivos del paquete es un archivo de catálogo. El archivo de catálogo contiene la firma digital del paquete. Para obtener un ejemplo de visualización de los archivos en un paquete firmado, consulte Escritura de un controlador KMDF basado en una plantilla.

Obtención de una firma de versión WHQL

Cuando el paquete de controladores supera las pruebas de certificación, se puede firmar mediante Windows Hardware Quality Labs (WHQL). Si WHQL firma el paquete de controladores, se puede distribuir a través del programa Windows Update u otros mecanismos de distribución compatibles con Microsoft.

Para instalar en Windows 10, 8.1, 8 y 7, el paquete de controladores puede tener una sola firma SHA1.

A partir de Windows 10, también debe enviar cualquier nuevo controlador en modo kernel de Windows 10 para la firma digital en el Portal del Panel del Centro para desarrolladores de hardware de Windows. Los envíos de controladores en modo de usuario y kernel deben tener un certificado de firma de código de validación extendida ("EV") válido.

** Nota ** El desuso SHA1 no se aplica a los controladores.

Firma de un paquete en comparación con la firma de un archivo de controlador individual

Un paquete de controladores contiene varios archivos. Normalmente, un paquete de controladores tiene uno o varios archivos de controlador, un archivo de información (archivo INF) y un archivo de catálogo. El archivo de catálogo contiene información sobre los demás archivos del paquete. Al firmar el archivo de catálogo, la firma del archivo de catálogo actúa como firma para todo el paquete de controladores. En otras palabras, firmar el archivo de catálogo es lo mismo que firmar el paquete de controladores.

En la mayoría de los casos, es suficiente firmar el paquete de controladores y no es necesario firmar archivos de controlador individuales. A veces, sin embargo, debe firmar tanto el paquete como los archivos de controlador individuales. Por ejemplo, los archivos del controlador de arranque deben estar firmados individualmente. La firma de un archivo de controlador individual se conoce como inserción de una firma en el archivo de controlador.

Supongamos que tiene una solución de Visual Studio que contiene un proyecto de controlador denominado MyDriver y un proyecto de paquete de controladores denominado MyDriver Package. Visual Studio proporciona dos conjuntos de páginas de propiedades: una para My Driver y otra para My Driver Package. Para firmar el paquete de controladores, establezca las propiedades Firma de controladores de My Driver Package. Para insertar una firma en el archivo de controlador individual, establezca las propiedades de Firma de controladores de My Driver.

Al establecer las propiedades del paquete de controladores para la firma de producción, recuerde ajustar las propiedades de firma de los archivos de controlador individuales en consecuencia. Desactive la firma de los archivos de controlador individuales o establezca los archivos de controlador individuales para que usen el mismo certificado que especificó para el paquete.

Nota Para ver el hash (también denominado huella digital) de un certificado, abra una ventana del símbolo del sistema y vaya al directorio que contiene el certificado. Escriba el comando certutil -dump CertName.pfx, donde CertName.pfx es el nombre del certificado.