首页 文章

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

提问于
浏览
1

我花时间整理像these这样的问题

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

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

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

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

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

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

在此先感谢,珍妮弗

2 回答

  • 3

    嗯,你的方法本质上是不安全的 . 您永远不应该制作代码签名证书,包括通常可供团队中所有开发人员使用的私钥密码 .

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

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

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

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

  • 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 . 本质上,临时开发证书的创建和分发成为网络管理员问题,而不是开发/构建问题 . 管理员类型有很多方法可以将证书推送到域上的计算机存储中 .

    在任一情况下,应使用Mage.exe(Manifest Generation and Editing Tool)等工具在构建计算机的最后一分钟(使用temp dev证书构建之后)应用真正的最终 生产环境 证书 .

相关问题