Installation of codesigning certificates on Windows


How to install a code signing certificate in Windows development environments

Dentro del framework de .NET, existe una herramienta para firmar digitalmente desde la línea de comandos, comprobar firmas en archivos o archivos con marcas de tiempo.

Esta herramienta se instala conjuntamente con Visual Studio. Para ejecutar la herramienta, deberás acudir al Símbolo del sistema de Visual Studio en Windows 7 (O al símbolo del sistema para desarrolladores).

El comando tiene la siguiente sintaxis:

signtool [command] [options] [file_name | ...]

Parámetros

Argumento Descripción
command Uno de los cuatro comandos (catdb, sign, Timestamp o Verify) que especifica una operación para realizar en un archivo. En las siguientes tabla puedes obtener más información sobre estos comandos
options Opciones que modifican un comando. Además de las opciones globales /q y /v, cada comando admite un conjunto único de opciones.
file_name Ruta del archivo que se va a firmar.

La herramienta Firmar acepta los comandos que describiremos a continuación. Cada comando se utiliza con un conjunto distinto de opciones, que enumeraremos en cada secció.

Comando

Descripción

catdb

Agrega un archivo de catálogo a una base de datos de catálogo o bien lo quita de esta.Las bases de datos de catálogo se utilizan para la búsqueda automática de archivos de catálogo y se identifican mediante un GUID.Para obtener una lista de las opciones admitidas por el comando catdb, vea Opciones del comando catdb.

signo

Firma archivos digitalmente.Las signaturas digitales protegen los archivos contra la manipulación y permiten a los usuarios comprobar el firmante en función de un certificado de firma.Para obtener una lista de las opciones admitidas por el comando sign, vea Opciones del comando sign.

Timestamp

Asigna marcas de tiempo a archivos.Para obtener una lista de las opciones admitidas por el comando TimeStamp, vea Opciones del comando TimeStamp.

Verify

Comprueba la signatura digital de los archivos; para ello, determina si una autoridad de confianza ha emitido el certificado de firma, si se ha revocado y, opcionalmente, si es válido para una directiva determinada..

Todos los comandos de la herramienta Firmar admiten las siguientes opciones:

Opción global

Descripción

/q

No muestra ninguna salida si el comando se ejecuta correctamente y muestra el resultado mínimo si se produce un error en el comando.

/v

Muestra resultados detallados independientemente de si el comando se ejecuta correctamente o no y muestra mensajes de advertencia.

/debug

Muestra información de depuración.

Comando catdb

El comando catdb se puede utilizar con las siguientes opciones:

Opción de catdb

Descripción

/d

Especifica que se actualiza la base de datos de catálogo predeterminada.Si no se utiliza la opción /d ni la opción /g, la herramienta Firmar actualiza el componente del sistema y la base de datos del controlador.

/gGUID

Especifica que se actualiza la base de datos de catálogo identificada por el identificador único global GUID.

/r

Quita los catálogos especificados de la base de datos de catálogo.Si no se especifica esta opción, la herramienta Firmar agrega los catálogos especificados a la base de datos de catálogo.

/u

Especifica que se genera un nombre único automáticamente para los archivos de catálogo agregados.Si es necesario, a los archivos de catálogo se les cambia el nombre para evitar que se produzcan conflictos de nombre con archivos de catálogo existentes.Si no se especifica esta opción, la herramienta Firmar sobrescribe cualquier catálogo existente que tenga el mismo nombre que el catálogo que se va a agregar.

Comando sign

El comando catdb se puede utilizar con las siguientes opciones:

Opción del comando sign

Descripción

/a

Selecciona automáticamente el mejor certificado de firma.La herramienta Firmar encuentra todos los certificados válidos que cumplan todas las condiciones especificadas y selecciona el que sea válido durante más tiempo.Si esta opción no está presente, la herramienta Firmar solo espera encontrar un certificado de firma válido.

/ac file

Agrega un certificado adicional desde archivo al bloque de signatura.

/as

Anexa esta signatura.Si no hay ninguna signatura principal presente, esta signatura se convierte en la principal.

/cCertTemplateName

Especifica el nombre de plantilla de certificado (una extensión de Microsoft) para el certificado de firma.

/csp CSPName

Especifica el proveedor de servicios criptográficos (CSP) que contiene el contenedor de claves privadas.

/d Desc

Especifica una descripción del contenido firmado.

/du URL

Especifica el localizador uniforme de recursos (URL) de la descripción ampliada del contenido firmado.

/f SignCertFile

Especifica el certificado de firma en un archivo.Si el archivo está en formato de intercambio de información personal (PFX) y protegido por una contraseña, utilice la opción /p para especificar la contraseña.Si el archivo no contiene claves privadas, utilice las opciones /csp y /k para especificar el CSP y el nombre de contenedor de claves privadas, respectivamente.

/fd

Especifica el algoritmo de resumen de archivo que se va a usar para crear signaturas de archivo.El valor predeterminado es SHA1.

/i IssuerName

Especifica el nombre del emisor del certificado de firma.Este valor puede corresponder a una subcadena del nombre del emisor completo.

/kc PrivKeyContainerName

Especifica el nombre del contenedor de claves privadas.

/n SubjectName

Especifica el nombre del sujeto del certificado de firma.Este valor puede corresponder a una subcadena del nombre del sujeto completo.

/nph

Si se admite, suprime los hash de página para los archivos ejecutables.La variable de entorno SIGNTOOL_PAGE_HASHES y la versión de wintrust.dll determinan el valor predeterminado.Esta opción se omite para los archivos sin PE.

/p Password

Especifica la contraseña que se debe utilizar al abrir un archivo PFX.(Utilice la opción /f para especificar un archivo PFX).

/p7Path

Especifica que se genera un archivo PKCS (Estándares de criptografía de clave pública) #7 para cada archivo de contenido especificado.Los archivos PKCS #7 se denominan ruta\nombre de archivo.p7.

/p7ceValue

Especifica opciones para el contenido PKCS #7 firmado.Establezca Value en "Embedded" para integrar el contenido firmado en el archivo PKCS #7 o en "DetachedSignedData" para mostrar la parte de datos firmados de un archivo PKCS #7 desasociado.Si no se utiliza la opción /p7ce, el contenido firmado se incrusta de forma predeterminada.

/p7co<OID>

Especifica el identificador de objeto (OID) que identifica el contenido PKCS #7 firmado.

/ph

Si se admite, genera los hash de página para los archivos ejecutables.

/r RootSubjectName

Especifica el nombre del sujeto del certificado raíz al que el certificado de firma debe encadenarse.Este valor puede corresponder a una subcadena del nombre de sujeto completo del certificado raíz.

/s StoreName

Especifica el almacén que se va a abrir al buscar el certificado.Si no se especifica esta opción, se abre el almacén My.

/sha1 Hash

Especifica el hash SHA1 del certificado de firma.El hash SHA1 se especifica normalmente cuando varios certificados cumplen los criterios especificados por los modificadores restantes.

/sm

Especifica que se utiliza un almacén de equipo, en lugar de un almacén de usuario.

/t URL

Especifica la dirección URL del servidor con marca de tiempo.Si esta opción (o /tr) no está presente, el archivo firmado no tendrá marca de tiempo.Se genera una advertencia si se produce algún error relacionado con la marca de tiempo.Esta opción no se puede combinar con la opción /tr.

/td alg

Se utiliza con la opción /tr para solicitar un algoritmo de resumen utilizado por el servidor de marca de tiempo RFC 3161.

/tr URL

Especifica la dirección URL del servidor con marca de tiempo RFC 3161.Si esta opción (o /t) no está presente, el archivo firmado no tendrá marca de tiempo.Se genera una advertencia si se produce algún error relacionado con la marca de tiempo.Esta opción no se puede combinar con la opción /t.

/u Usage

Especifica el uso mejorado de clave (EKU) que debe encontrarse en el certificado de firma.El valor de uso se puede especificar mediante un identificador de objetos (OID) o una cadena.El uso predeterminado es "Firma de código" (1.3.6.1.5.5.7.3.3).

/uw

Especifica el uso de "Comprobación de componentes del sistema de Windows" (1.3.6.1.4.1.311.10.3.6).

Comando TimeStamp

El comando timestamp se puede utilizar con las siguientes opciones:

Opción de TimeStamp

Descripción

/p7

Agrega marcas de tiempo a archivos PKCS #7.

/tURL

Especifica la dirección URL del servidor con marca de tiempo.El archivo al que se va a agregar la marca de tiempo se debe haber firmado previamente.Se requiere la opción /t o /tr.

/tdalg

Solicita un algoritmo de resumen utilizado por el servidor de marca de tiempo RFC 3161./td se utiliza con la opción /tr.

/tpindex

Agrega una marca de tiempo a la signatura en index.

/trURL

Especifica la dirección URL del servidor con marca de tiempo RFC 3161.El archivo al que se va a agregar la marca de tiempo se debe haber firmado previamente.Se requiere la opción /tr o /t.

Comando Verify

El comando verify se puede utilizar con las siguientes opciones:

Opción de Verify

Descripción

/a

Especifica que todos los métodos se puedan utilizar para comprobar el archivo.Primero, se buscan las bases de datos de catálogo para determinar si el archivo se firma en un catálogo.Si el archivo no se firma en un catálogo, la herramienta Firmar intenta comprobar la signatura incrustada del archivo.Se recomienda esta opción a la hora de comprobar si se pueden firmar o no archivos en un catálogo.Algunos ejemplos de estos archivos son los archivos o controladores de Windows.

/ad

Busca el catálogo utilizando la base de datos de catálogo predeterminada.

/agCatDBGUID

Busca el catálogo en la base de datos de catálogo identificada por CatDBGUID.

/all

Comprueba todas las signaturas de un archivo que incluye varias signaturas.

/as

Busca el catálogo utilizando la base de datos de catálogo de componentes del sistema (controlador).

/cCatFile

Especifica el archivo de catálogo por nombre.

/d

Especifica que la herramienta Firmar debe imprimir la descripción y la dirección URL de esta.

/dsIndex

Comprueba la signatura en una posición especificada.

/hash (SHA1 |SHA256)

Especifica un algoritmo hash opcional que se usará al buscar un archivo en un catálogo.

/kp

Especifica que la comprobación debe realizarse con la directiva de firma de controladores en modo kernel.

/ms

Utiliza la semántica de comprobación múltiple.Este es el comportamiento predeterminado de una llamada WinVerifyTrust en Windows 8 y posteriores.

/oVersion

Comprueba el archivo por versión del sistema operativo.Version tiene el siguiente formato: PlatformID:VerMajor.VerMinor.BuildNumber.PlatformID representa el valor subyacente de un miembro de enumeración PlatformID.

Importante

Se recomienda el uso del modificador /o.Si no se especifica /o, SignTool.exe puede devolver resultados inesperados.Por ejemplo, si no incluye el modificador /o, los catálogos del sistema que se validan correctamente en un sistema operativo anterior pueden no validarse correctamente en un sistema operativo más reciente.

/p7

Comprueba los archivos PKCS #7.No se usa ninguna directiva existente para la validación de PKCS #7.Se comprueba la signatura y se genera una cadena para el certificado de firma.

/pa

Especifica que se debe usar la directiva de comprobación de Authenticode predeterminada.Si no se especifica la opción /pa, la herramienta Firmar utiliza la directiva de comprobación de controladores de Windows.Esta opción no se puede combinar con la opción catdb.

/pgPolicyGUID

Especifica una directiva de comprobación por GUID.PolicyGUID corresponde a la propiedad ActionID de la directiva de comprobación.Esta opción no se puede combinar con la opción catdb.

/ph

Especifica que la herramienta Firmar debe imprimir y comprobar los valores hash de la página.

/rRootSubjectName

Especifica el nombre del sujeto del certificado raíz al que el certificado de firma debe encadenarse.Este valor puede corresponder a una subcadena del nombre del sujeto completo del certificado raíz.

/tw

Especifica que se debe generar una advertencia si la signatura no tiene marca de tiempo.

Valor devuelto por el comando

La herramienta de firma devolverá uno de los siguientes valores:

Código de salida

Descripción

0

La ejecución se realizó correctamente

1

Error en la ejecución

2

La ejecución ha finalizado con advertencias.

[Fuente: https://msdn.microsoft.com/library/8s9b9yaz.aspx]

Buy SSL Certificate

Big Saves