Rud*_*udi 24 c# digital-signature
我正在编写需要管理访问权限的软件.弹出UAC对话框时,它会显示与未签名软件不同的数字签名软件弹出窗口.我相信对我的软件进行数字签名将使用户更容易信任我的软件.数字签名软件需要花费数千美元,还是免费的?有一个简单的方法吗?我搜索过谷歌,我得到的是如何签署PHP,XML和PDF文件,这不是我想要的.我需要签署我的软件可执行文件.
刚看到一些关于sigtool.exe的事情?这是正确的方向吗?那些复杂的.pfx文件和Authenticode怎么样?
Ric*_*ebb 19
如其他答案中所述,您首先需要购买适合代码签名的证书.这将花费几百美元,远不及一千.当我最近与Globalsign续签我公司的证书时,还有一项调查来检查公司是否合法 - 因为我在注册过程中使用手机号码,他们想要公司会计师的一封信来验证我们是真正的业务.
要签署可执行文件,我使用MSBuild任务.以下是相关部分的摘录:
<!--
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>
Run Code Online (Sandbox Code Playgroud)
为此,您需要将证书安装到个人证书存储区中(请参阅CertificateStoreName="My"
上面的示例).在Globalsign网站上,此安装是证书下载过程的自动部分.注意:我发现在下载证书时使用Internet Explorer会有所帮助,因为它与Windows证书存储区集成在一起.一旦它在下载计算机上的证书存储中,您可以将其导出为pfx文件,将其传输到您的构建计算机,然后将其导入.如果您确实导出它,我建议您使用密码保护导出的文件,以防它落入坏人之手.
当您使用上述SignTool MSBuild任务时,它会从与当前Windows用户帐户关联的个人存储("我的")中读取证书.这意味着您可以控制谁可以使用您的证书签署代码,这是一件好事.您只应将证书导入您信任的开发人员的个人存储中.
在签署代码时使用时间戳服务器是个好主意,这样您就不需要在证书过期时重新签名代码.
Ian*_*oyd 11
您需要Microsoft提供的代码签名命令行实用程序.
然后:
signtool.exe sign /v /f "MyCertificate.pfx" -t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyApp.exe"
Run Code Online (Sandbox Code Playgroud)
或者替代地
signcode.exe -a "sha1" -spc "MySoftwarePublishingCertificate.spc" -v "MyPrivateKeyFile.pvk" -t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyApp.exe"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19617 次 |
最近记录: |