SignTool

SignTool – Firma digitalmente tus aplicaciones y archivos con estándar profesional de Microsoft

Descripción del programa SignTool

SignTool es una herramienta de línea de comandos desarrollada por Microsoft que permite firmar digitalmente archivos, verificar firmas existentes y añadir marcas de tiempo a ejecutables, bibliotecas DLL, controladores, paquetes de instalación y otros tipos de archivos en sistemas operativos Windows. Su función principal es aplicar firmas digitales mediante el estándar Authenticode, garantizando así la integridad del software y la identidad del editor ante los usuarios finales. Está dirigida principalmente a desarrolladores de software, administradores de sistemas y empresas que distribuyen aplicaciones y necesitan cumplir con los requisitos de seguridad que exigen los sistemas operativos modernos.

La característica más destacada de SignTool es su capacidad para integrar la firma digital en flujos de trabajo automatizados de compilación y despliegue continuo. Al tratarse de una utilidad de línea de comandos, puede invocarse desde scripts, archivos por lotes o sistemas de integración continua como Azure DevOps o GitHub Actions, permitiendo firmar cientos de archivos de forma desatendida. Cabe destacar que sin una firma digital válida, los usuarios que descarguen una aplicación verán advertencias de seguridad de Windows SmartScreen o, en el caso de controladores, el sistema rechazará directamente su instalación.

SignTool se introdujo como parte del conjunto de herramientas de desarrollo de Microsoft hace más de dos décadas y ha evolucionado junto con los sistemas operativos Windows. Se distribuye exclusivamente como componente del Windows Software Development Kit (SDK), cuyas versiones más recientes corresponden al SDK de Windows 11, con números de compilación como 10.0.22621.0 o 10.0.26100.0. Aunque la herramienta en sí no recibe actualizaciones independientes, cada nueva versión del SDK incorpora mejoras en los algoritmos de hash admitidos y en la compatibilidad con los requisitos de firma más estrictos que impone Microsoft.

¿Necesitas distribuir software en Windows con todas las garantías de seguridad y sin que los antivirus o SmartScreen bloqueen tus ejecutables?

Características clave de SignTool

1. Firma digital con certificados Authenticode

Esta es la función central de SignTool. El comando [sign] permite aplicar una firma digital a archivos ejecutables, bibliotecas DLL, paquetes MSIX, instaladores MSI y una amplia variedad de formatos más. La firma se realiza utilizando un certificado de firma de código que puede estar almacenado en un archivo [.pfx], en el almacén de certificados de Windows o en un token hardware. Al firmar, SignTool calcula un hash del archivo y lo cifra con la clave privada del certificado, creando una garantía criptográfica de que el software no ha sido alterado desde su publicación.

2. Verificación de firmas y cadena de confianza

El comando [verify] permite comprobar la validez de la firma digital de cualquier archivo firmado con Authenticode. SignTool examina no solo que el hash del archivo coincida con el almacenado en la firma, sino que también verifica toda la cadena de certificados hasta la autoridad raíz de confianza. Además, comprueba si el certificado ha sido revocado y, opcionalmente, si cumple con políticas específicas como la directiva de controladores de Windows. Esta funcionalidad resulta esencial para validar la integridad de archivos descargados antes de su ejecución.

3. Sellado de tiempo (timestamping)

El comando [timestamp] añade una marca de tiempo de una autoridad de sellado confiable a la firma digital. Esta característica es crítica porque permite que la firma siga siendo válida incluso después de que el certificado de firma original haya caducado. Sin una marca de tiempo, la firma digital expira junto con el certificado, lo que obligaría a redistribuir el software firmado de nuevo. Al incorporar un sello de tiempo, SignTool garantiza que el sistema operativo pueda verificar que el archivo se firmó cuando el certificado aún era válido.

4. Compatibilidad con múltiples formatos de archivo

SignTool no se limita únicamente a archivos .exe o .dll. La herramienta admite la firma de paquetes de aplicaciones modernas como .appx, .msix y .msixbundle, archivos de instalador .msi y .msp, controles ActiveX .ocx, scripts de PowerShell .ps1 y .psm1, archivos de catálogo .cat, controladores .sys y paquetes de extensiones de Visual Studio .vsix. Esta versatilidad la convierte en la solución unificada para cualquier necesidad de firma de código en el ecosistema Windows.

5. Selección automática y flexible del certificado

SignTool ofrece múltiples métodos para especificar qué certificado utilizar durante la firma. La opción /a permite que la herramienta seleccione automáticamente el certificado de firma de código válido más adecuado del almacén del sistema. Alternativamente, se puede indicar el nombre del sujeto del certificado con /n, su huella digital SHA1 con /sha1 o la ruta a un archivo .pfx con /f seguido de la contraseña con /p. Esta flexibilidad facilita tanto la firma manual interactiva como la automatizada en entornos de compilación.

Explicación detallada de las funcionalidades

El flujo de trabajo principal de SignTool se articula en torno a su sintaxis de comandos, que sigue la estructura [signtool ]. Para firmar un ejecutable con un certificado almacenado en un archivo [.pfx], se emplea una línea como signtool sign /fd SHA256 /a /f certificado.pfx /p contraseña miprograma.exe. El parámetro /fd especifica el algoritmo de hash del archivo, siendo SHA256 el recomendado actualmente por Microsoft frente al obsoleto SHA1. El parámetro /a indica a la herramienta que seleccione automáticamente el certificado adecuado del almacén.

Por ello, el verdadero valor de SignTool se manifiesta en su capacidad para integrarse en procesos de compilación automatizados. Un script de PowerShell o un archivo por lotes puede invocar SignTool inmediatamente después de que el compilador genere el ejecutable final. En este sentido, la herramienta devuelve códigos de salida estandarizados que permiten al sistema de compilación determinar si la firma se realizó con éxito (código 0), falló (código 1) o se completó con advertencias (código 2). Esta característica la hace indispensable en pipelines de DevOps donde se requiere firmar múltiples artefactos antes de su publicación.

Asimismo, la verificación de firmas constituye un pilar fundamental para la seguridad en entornos corporativos. El comando signtool verify /pa /v archivo.exe realiza una comprobación exhaustiva utilizando la directiva de autenticación predeterminada y mostrando información detallada de la cadena de certificados. Para archivos de sistema que puedan estar firmados mediante catálogos, la opción /a busca automáticamente el catálogo correspondiente. Esta verificación puede programarse para ejecutarse periódicamente en servidores o estaciones de trabajo, asegurando que ningún archivo crítico haya sido manipulado.

Cabe destacar que la elección del algoritmo de hash es un aspecto técnico crucial. A partir de las versiones recientes del Windows SDK, SignTool exige especificar explícitamente el algoritmo de hash del archivo con /fd y el algoritmo de hash del sello de tiempo con /td. Aunque SHA1 fue el estándar durante años, actualmente se considera vulnerable y Microsoft recomienda encarecidamente el uso de SHA256. Ignorar esta recomendación puede provocar que las firmas no sean aceptadas por las versiones más recientes de Windows o que SmartScreen muestre advertencias de seguridad a los usuarios.

Descarga e instalación de SignTool

  • Página oficial: Windows SDK – Microsoft Learn
  • Versión actual: Incluida en Windows SDK 10.0.26100 (2024)
  • Últimas versiones: Windows 11 SDK (10.0.26100), Windows 11 SDK (10.0.22621), Windows 10 SDK (10.0.20348)
  • Tamaño: Aproximadamente 500 KB – 1 MB para el ejecutable; el instalador del SDK completo ocupa más de 1 GB
  • Sistemas operativos compatibles: Windows 11, Windows 10, Windows 8.1, Windows Server 2022/2019/2016
  • Requisitos mínimos: Sistema operativo Windows compatible;.NET Framework 4.8 o superior para algunas funcionalidades
  • Licencia: Freeware (incluido en el Windows SDK de Microsoft)
  • Idiomas: Inglés (interfaz de comandos)
  • Soporte técnico: Microsoft Learn (documentación oficial), foros de MSDN, GitHub

Cómo usar SignTool

Tras instalar el Windows SDK, abre una ventana de comandos y navega hasta la carpeta de instalación de SignTool, típicamente en C:\Program Files (x86)\Windows Kits\10\bin\\x64. Para un uso más cómodo, puedes agregar esta ruta a la variable de entorno PATH del sistema o utilizar el Símbolo del sistema para desarrolladores de Visual Studio, que ya tiene configuradas todas las rutas necesarias. El primer paso recomendado es verificar que SignTool funciona correctamente ejecutando simplemente [signtool] sin argumentos, lo que mostrará la ayuda con los comandos disponibles y su sintaxis básica.

El flujo de trabajo principal para firmar un archivo comienza con la obtención de un certificado de firma de código válido, ya sea en formato .pfx o instalado en el almacén de certificados del sistema. Una vez que dispongas del certificado, utiliza el comando sign con el algoritmo de hash adecuado.

Por ejemplo, para firmar miaplicacion.exe con un certificado [.pfx] protegido con contraseña, escribe: signtool sign /fd SHA256 /a /f C:\certs\micertificado.pfx /p mipassword C:\build\miaplicacion.exe. Si el certificado ya está instalado en el almacén personal, basta con usar signtool sign /fd SHA256 /a C:\build\miaplicacion.exe.

Además de la firma básica, existen funciones complementarias que aumentan la seguridad y la utilidad de la herramienta. Para añadir un sello de tiempo que prolongue la validez de la firma más allá de la caducidad del certificado, incorpora la opción [/tr] seguida de la URL de una autoridad de sellado confiable y /td para el algoritmo de hash del sello.

Un ejemplo completo sería: signtool sign /fd SHA256 /a /f certificado.pfx /p contraseña /tr http://timestamp.digicert.com /td SHA256 programa.exe.

Para verificar que un archivo descargado mantiene su firma íntegra, emplea signtool verify /pa /v archivo.exe, que mostrará todos los detalles de la cadena de certificados.

Observaciones sobre el programa SignTool

SignTool se diferencia técnicamente de otras herramientas de firma en que es la utilidad nativa y oficial de Microsoft para Authenticode, el estándar de firma de código de Windows. Mientras que alternativas como OpenSSL o GnuPG pueden firmar archivos genéricamente, sus firmas no son reconocidas de forma nativa por el sistema operativo Windows ni por mecanismos como User Account Control (UAC) o SmartScreen.

Esta integración profunda con el ecosistema Windows proporciona una confianza y una tranquilidad inigualables: el desarrollador sabe que su software será validado por los mismos mecanismos que Microsoft utiliza para sus propias aplicaciones.

El beneficio práctico más inmediato para el desarrollador o la empresa es la eliminación de las advertencias de seguridad que Windows muestra al ejecutar software no firmado. Un programa firmado con un certificado de confianza evita el mensaje Windows protegió su PC y la necesidad de que el usuario haga clic en Ejecutar de todos modos.

Asimismo, los navegadores y clientes de correo electrónico confían más en los archivos firmados, reduciendo la probabilidad de que sean marcados como sospechosos o bloqueados directamente. Esta accesibilidad y profesionalidad en la distribución de software se traduce en una mayor tasa de adopción por parte de los usuarios.

SignTool es una herramienta oficial de Microsoft Corporation, desarrollada y mantenida por los equipos de Windows y del Windows SDK. A diferencia de utilidades de terceros, su ciclo de vida está ligado al de los kits de desarrollo de Windows, garantizando que siempre esté actualizada con los últimos requisitos de seguridad y algoritmos criptográficos que Microsoft implementa en sus sistemas operativos. Esta vinculación directa con el fabricante del sistema operativo es su principal aval de fiabilidad.

En cuanto a actualizaciones, SignTool sigue el calendario de lanzamientos del Windows SDK. Generalmente, Microsoft publica una nueva versión del SDK coincidiendo con las principales actualizaciones de Windows 10 y Windows 11, aproximadamente una o dos veces al año. La última versión estable corresponde al SDK de Windows 11 versión 24H2.

Es importante destacar que, aunque el ejecutable [signtool.exe] rara vez cambia su interfaz de comandos, las nuevas versiones del SDK incorporan soporte para los algoritmos de hash y las políticas de seguridad más recientes exigidas por Windows.

No existe una versión portable independiente de SignTool distribuida oficialmente por Microsoft, ya que la herramienta se instala como parte del Windows SDK. Sin embargo, una vez instalada, es posible copiar el archivo [signtool.exe] junto con las bibliotecas dependientes a otra ubicación o a una memoria USB para su uso en otros equipos que no tengan el SDK instalado.

Esta práctica, aunque no está documentada oficialmente, funciona en la mayoría de los casos siempre que el sistema de destino disponga de los componentes redistribuibles de Visual C++ necesarios.

Una funcionalidad extra relevante es la capacidad de firmar archivos de catálogo [.cat] que contienen los hashes de múltiples archivos. Esto permite firmar indirectamente un conjunto completo de controladores o componentes de sistema sin modificar cada archivo individualmente. Windows utiliza este mecanismo para validar la integridad de sus propios archivos de sistema, y los desarrolladores de controladores lo emplean para cumplir con los requisitos de firma del kernel sin alterar los binarios originales.

Limitaciones importantes

  • SignTool es una herramienta exclusiva de línea de comandos, lo que implica una curva de aprendizaje considerable para usuarios no familiarizados con la sintaxis de consola. No dispone de interfaz gráfica oficial, requiriendo memorizar parámetros y rutas de acceso.
  • La obtención de un certificado de firma de código válido y reconocido por Microsoft no es gratuita. Los certificados emitidos por autoridades de confianza como DigiCert o Sectigo tienen un coste anual significativo, lo que puede ser una barrera para desarrolladores independientes.
  • La herramienta carece de funciones avanzadas de gestión de certificados o de automatización compleja, delegando toda la lógica de selección de certificados y manejo de errores en scripts externos que el usuario debe programar.

Alternativa recomendada

Para aquellos usuarios que prefieran una experiencia visual y no necesiten la automatización por línea de comandos, SignGUI de Briggs Softworks representa una alternativa sólida y gratuita. Esta utilidad actúa como una interfaz gráfica que envuelve a SignTool.exe, exponiendo todas sus opciones principales a través de ventanas, menús desplegables y selectores de archivo intuitivos. Está diseñada específicamente para desarrolladores que desean firmar sus programas de forma ocasional sin tener que recordar la sintaxis exacta de los comandos.

Las ventajas de SignGUI sobre SignTool son notables en términos de usabilidad: permite seleccionar el certificado desde una lista gráfica, elegir el algoritmo de hash mediante botones de opción, arrastrar y soltar archivos para firmar y guardar configuraciones de firma frecuentes. Además, muestra el resultado de la operación en un panel de registro integrado, facilitando la depuración de errores. Si tu flujo de trabajo no requiere automatización y valoras la simplicidad, SignGUI te ahorrará tiempo y evitará errores de sintaxis.

Si estás listo para firmar tus aplicaciones con la herramienta oficial de Microsoft, puedes descargar el SDK de Windows desde el sitio de Microsoft Learn u obtener SignGUI desde la web de Briggs Softworks.

Sección FAQ

¿SignTool es gratis o de pago?

SignTool es completamente gratuito. Se distribuye como parte del Windows Software Development Kit (SDK) de Microsoft, que puede descargarse sin coste alguno desde el sitio oficial de Microsoft Learn. No obstante, para utilizar la función de firma es necesario disponer de un certificado de firma de código emitido por una autoridad certificadora, el cual sí tiene un coste comercial.

¿Funciona en Linux, macOS, Windows 10 y Windows 11?

SignTool es una herramienta diseñada exclusivamente para sistemas operativos Windows. Es totalmente compatible con Windows 10 y Windows 11, así como con versiones de servidor como Windows Server 2016, 2019 y 2022. No existe versión nativa para Linux o macOS, ya que la tecnología de firmas Authenticode está profundamente integrada en el ecosistema Windows.

¿Qué diferencia a SignTool de otras alternativas similares?

La principal diferencia de SignTool frente a alternativas de terceros es que se trata de la herramienta oficial de Microsoft, lo que garantiza una compatibilidad total con los mecanismos de validación de Windows, SmartScreen y User Account Control. Mientras otras herramientas pueden generar firmas técnicamente válidas, solo SignTool está optimizado para cumplir con los requisitos exactos que Microsoft impone en cada actualización de sus sistemas operativos.

¿Es obligatorio firmar mis aplicaciones para distribuirlas en Windows?

No es legalmente obligatorio, pero sí es altamente recomendable y, en la práctica, imprescindible para una distribución profesional. Windows muestra advertencias de seguridad al ejecutar software no firmado, y Microsoft SmartScreen bloquea inicialmente los programas sin firma conocida, obligando al usuario a ignorar manualmente el aviso. Además, los controladores de kernel sí requieren firma obligatoria para instalarse en versiones de 64 bits de Windows.

¿Qué tipos de certificado puedo usar con SignTool?

SignTool admite certificados de firma de código almacenados en archivos [.pfx] o [.p12], certificados instalados en el almacén de certificados del sistema Windows y certificados en tokens hardware o smart cards a través de proveedores criptográficos (CSP/KSP). Para fines de prueba, se pueden generar certificados autofirmados con herramientas como MakeCert, aunque estos no serán de confianza para los usuarios finales y Windows seguirá mostrando advertencias de seguridad.