多开发人员环境中PFX文件的最佳实践

时间:2014-01-14 20:57:44

标签: .net visual-studio code-signing pfx

我花时间整理these

等问题 到目前为止没有运气。我公司有一个我们使用的VeriSign的pfx文件。我将它添加到我的项目中并在添加后输入密码然后检查我的解决方案。然后我转到另一台机器并且项目编译时出现以下错误:

无法导入密钥文件'xxx.pfx' - 错误'密钥文件可能受密码保护'

有没有办法在每个开发环境中输入PFX文件的密码?好像我可以将我的引用指向可能解决此问题的PFX文件的服务器位置。但是,当我尝试在记事本中更改我的.csproj文件时:

<ManifestKeyFile>xxx.pfx</ManifestKeyFile>
to 
<ManifestKeyFile>\\server\VeriSign\xxx.pfx</ManifestKeyFile>

我收到有关文件名中非法字符的错误。

有关如何在每个开发环境中输入密码的任何建议吗?

提前致谢, 珍

2 个答案:

答案 0 :(得分:3)

你的方法是 ehm ,性质不安全。您应该,永远不要为您的团队中的所有开发人员制作代码签名证书,包括其私钥的密码。

您应该了解,发布一个软件是一项具有法律约束力的操作,您的代码签名证书可以证明该软件的真实性并与最终用户/客户建立信任。您目前的做法完全破坏了这种信任。当您只允许公司/开发团队中的任何人访问此证书时,就像告诉

  

“嘿,我们的总经理是盲人,他会在没有阅读的情况下签署任何论文。”

相反,您应该使用内部CA颁发的不受保护的开发证书,或者应用delay-signing

生产代码签名证书应在受控,安全的发布版本环境中。应将其导入证书存储区,而不启用私钥导出。只有受信任的人(可能在其雇佣合同中有足够的法律条款)才能访问此版本构建环境。

答案 1 :(得分:0)

我正在为Excel签署一个VSTO附加组件。我不知道这是否适用于您的项目类型或情况。

Visual Studio实际上并未使用pfx文件对清单进行签名。它使用Windows证书存储中的证书对其进行签名,该证书具有ManifestCertificateThumbprint属性中的指纹。

<PropertyGroup>
    <ManifestKeyFile>some.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
    <ManifestCertificateThumbprint>...</ManifestCertificateThumbprint>
</PropertyGroup>

ManifestKeyFile是Visual Studio的提示,如果它不在商店中,它可以找到证书。

创建新的VSTO项目时,在第一次构建它之前,它不包含这些属性。在第一次构建时,Visual Studio会将您推送到在商店中创建证书的工作流,设置ManifestCertificateThumbprint,将证书导出到pfx文件,并将ManifestKeyFile提示设置为指向该文件。将此项目添加到源代码管理会导致第二个开发人员具有不同的工作流程。对于她来说,ManifestCertificateThumbprint不在证书库中,因此它使用ManifestKeyFile提示在项目中找到pfx文件,并将该证书安装到商店,这使她输入密码对于pfx文件。证书在商店之后,pfx文件只是项目中的货物。

此工作流程很好。由于它是一个临时的,不受保护的本地证书,如果它在开发者之间共享并不重要。

您可能正在寻找的工作流程是:使用项目的“签名”选项卡上的从商店中选择... 选项来选择证书。它将删除ManifestKeyFile提示。当其他开发人员从源代码​​控制中获取项目时,他们将需要在他们的商店中拥有证书,因此您可以从项目中删除PFX。本质上,临时开发证书的创建和分发成为网络管理员问题,而不是开发/构建问题。管理员类型有很多方法可以将证书推送到域中的计算机存储中。

在任何一种情况下,真正的最终生产证书应该在构建机器的最后一分钟(使用temp dev证书构建之后)使用Mage.exe(Manifest Generation和编辑工具)。