c# - seguro - ¿Cómo puedo firmar digitalmente un ejecutable?
se necesita un ensamblado con nombre seguro (4)
Estoy codificando software que requiere acceso administrativo. Cuando aparece un diálogo de UAC, muestra una ventana emergente diferente para el software firmado digitalmente que el software no firmado. Creo que la firma digital de mi software permitiría a los usuarios confiar en mi software más fácilmente. ¿Cuesta miles de dólares firmar software digitalmente o es gratis? ¿Hay una forma sencilla de hacerlo? He buscado en Google y todo lo que obtengo es cómo firmar archivos PHP, XML y PDF, que no es lo que quiero. Necesito firmar mi software ejecutable.
Acabo de ver algo sobre sigtool.exe? ¿Es esta la dirección correcta? ¿Qué pasa con esos archivos .pfx y Authenticode complicados o qué no?
Como se mencionó en las otras respuestas, primero deberá comprar un certificado adecuado para la firma de código. Esto costará unos pocos cientos de dólares, en ningún lugar cerca de mil. Cuando renové el certificado de mi empresa con Globalsign recientemente, también hubo una investigación para verificar que la empresa era legítima, ya que usé un número de teléfono móvil para el proceso de registro. Querían una carta del contador de la empresa para verificar que somos un verdadero negocio. .
Para firmar el ejecutable, uso una tarea de MSBuild. Aquí un extracto con las piezas relevantes:
<!--
Installer files that need to be signed.
-->
<ItemGroup>
<InstallerSignedFiles Include="$(BuildRoot)path/to/myinstaller.msi"/>
<InstallerSignedFiles Include="$(BuildRoot)path/to/setup.exe"/>
</ItemGroup>
<Target Name="ReleasePackaging">
<!-- Sign the files we''re going to release -->
<SignTool
CertificateStoreName="My"
CertificateSubjectName="MyCompany"
Description="My application description"
TimestampServerUrl="http://timestamp.verisign.com/scripts/timstamp.dll"
TargetFiles="@(InstallerSignedFiles)"
/>
</Target>
Para que esto funcione como antes, deberá instalar el certificado en su almacén personal de certificados (consulte CertificateStoreName="My"
en el ejemplo anterior). En el sitio web de Globalsign, esta instalación fue una parte automática del proceso de descarga de certificados. Nota: Descubrí que es útil usar Internet Explorer cuando descarga el certificado, ya que está integrado con el almacén de certificados de Windows. Una vez que se encuentra en el almacén de certificados de la computadora de descarga, puede exportarlo como un archivo pfx , transferirlo a su máquina de compilación e importarlo allí. Si lo exporta, le aconsejo que proteja el archivo exportado con una contraseña en caso de que caiga en las manos equivocadas.
Cuando utiliza la tarea de MSBuild de SignTool como anteriormente, lee los certificados del almacén personal ("Mi") que está asociado con la cuenta de usuario de Windows actual. Esto significa que puede controlar quién puede firmar el código con su certificado, lo que es bueno. Solo debe importar el certificado en el almacén personal de desarrolladores en los que confíe.
Es una buena idea usar el servidor de marca de tiempo al firmar el código, de modo que no tenga que volver a firmar el código cuando caduque el certificado.
Es posible que desee leer Firma y verificación de código con Authenticode .
Necesitará la utilidad de línea de comandos de firma de código de Microsoft.
Y entonces:
signtool.exe sign /v /f "MyCertificate.pfx" -t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyApp.exe"
o alternativamente
signcode.exe -a "sha1" -spc "MySoftwarePublishingCertificate.spc" -v "MyPrivateKeyFile.pvk" -t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyApp.exe"
No estoy comercializando a nadie aquí, pero pruebe VeriSign . Ofrecen firma de código que es lo que buscas.