Firmando código con signtool

Siguiendo la estela de los últimos post que publiqué sobre certificados, esta semana también voy a hablar sobre ellos, aunque esta vez sobre cómo emplear los certificados de firma de código. Estos certificados son un tipo especial que  permiten marcar digitalmente la autoría nuestro software.

Para la generación de este certificado (al igual que con otros) tendremos que elaborar un request a una CA verificada que procesará la petición. Una vez expedido el certificado y exportado a pfx podremos firmar digitalmente nuestros ejecutables. Para firmarlo usamos la herramienta Signtool. Se trata de una  herramienta de línea de comandos, que viene incluida dentro de las herramientas SDK de Microsoft.  Entre las acciones principales disponibles destacan entre otras las siguientes: sign: que va a permitir firmar, verity: verificamos el binario y remove: podremos eliminar los certificados del ejecutable. Para nuestro caso concreto emplearemos la opción sign, así pues la sintaxis sería la siguiente:

signtool sign /f “fichero_pfx” /p “contraseña_pfx” /t “timestamp_server” “aplicacion.exe”

El servidor timestamp que pongamos nos va a permitir establecer una marca de tiempo que determinará la fecha en la que se firmó. Con esta opción (/t) agregamos la url de una Time Stamp Authority (ej:  http://tsa.starfieldtech.com;  http://timestamp.globalsign.com/scripts/timstamp.dll; http://timestamp.comodoca.com/authenticode; http://www.startssl.com/timestamp; http://timestamp.verisign.com/scripts/timstamp.dll; etc) . Una vez firmada la aplicación si accedemos a las propiedades del ejecutable (o si lo ejecutamos), podremos ver el autor.

image

Por último, cabe destacar que además de esta herramienta para gestionar certificados, con el SDK de Microsoft  dispondremos de makecert, certmgr, cert2spc y pvkpfx que suponen un amplio abanico de utilidades para administrarlos. Y con esto, me despido de momento ¡Nos vemos en el siguiente post!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *