我在Visual Studio 2013中有一个C#/.NET 4.5 x64项目。多个开发人员共同开发此项目,因此使用Git管理代码。我使用signtool.exe为编译后的.dll和.exe文件签名。我的公司购买了代码签名证书,如果我手动从命令行进行签名,如下所示:
signtool.exe sign /f cert.p12 /p "password" "compiled.dll"
......那么看起来一切都很顺利:我收到了成功消息,编译后的DLL文件在Windows资源管理器中显示为已正确签名。因此,实际签名过程没有任何问题。
但是,证书及其密码不能存放在Git中。它们将通过专门渠道提供给项目中的所有开发人员。我可以假设每个开发人员在构建项目时都会将证书存储在计算机的预定义位置,并且他将知道证书的密码。
因此,我的问题是:如何配置Visual Studio 2013以自动对其编译输出进行签名而不保留证书或其密码在Git中呢? 我希望它能够简单地工作,一旦开发人员在预定义路径(或导入等)中获得了证书,并且基于开发人员知道证书的密码的假设,只需在Visual Studio 2013中点击“生成”即可完成构建和签名,无需进一步操作。
如果签名过程可以是非交互式的(无需密码提示),那就更好了。最终,这将是连续集成(CI)服务器的一部分,该服务器可能也会对其输出进行签名,由于全程自动化,没有人员在场输入密码。不过,目前我接受任何解决方案。
我的证书是PKCS#12格式,受密码保护。Windows声称它未标记为可导出。