我在 Visual Studio 2013 中有一个 C#/.NET 4.5 x64 项目。不止一个开发人员在这个项目上工作,所以代码是在 Git 中管理的。我正在签署已编译.dll
的 s 和.exe
with signtool.exe
。我的公司购买了代码签名证书,如果我从命令行手动签名,如下所示:
signtool.exe sign /f cert.p12 /p "password" "compiled.dll"
...然后看起来一切都很好:我收到一条成功消息,并且 Windows 资源管理器中已编译 DLL 的属性显示它已正确签名。所以,我对实际的签名过程没有任何问题。
但是,证书及其密码不得存在于 Git 中。它们将带外提供给项目中的所有开发人员。我可以假设每个开发人员在构建项目时都会将证书存储在计算机上的预定义位置,并且他会知道密码。
所以,这是我的问题:如何配置 Visual Studio 2013 以自动签署其编译输出而不在 Git 中保留证书或其密码?我希望它尽可能简单,一旦开发人员在预定义的路径(或导入,或其他)中拥有证书,并假设开发人员知道证书的密码,在 Visual Studio 中单击“构建” 2013 只是构建并签署它,没有提出任何问题。
如果签名过程可以是非交互式的(没有密码提示),那是一个好处。最终,这将成为持续集成 (CI) 服务器的一部分,该服务器也可以对其输出进行签名,并且由于它是自动化的,因此没有人会在那里输入密码。但是,我现在会采取任何解决方案。
我的证书是 PKCS #12 格式,并受密码保护。Windows 声称它没有标记为导出。