代码签名证书选项

问题描述 投票:26回答:3

我已被分配为我的公司购买数字证书以对我们的代码进行签名的任务。我们在Microsoft领域开发应用程序-主要是WPF或基于Web的。

我已经研究了选项,发现Comodo价格合理且响应迅速,我们准备继续通过它们购买证书。.但是在注册表格中,有很多私钥选项,我不太喜欢可以肯定的,即:

  1. CSP

    • Microsoft基本密码提供程序
    • Microsoft基本智能卡加密提供程序
    • Microsoft增强加密提供程序v1.0
    • Microsoft软件密码提供程序
  2. 密钥大小

    • 1024
    • 2048
    • 4096
  3. 可导出?

    • 是/否
  4. 受用户保护?

    • 是/否

只是想知道所有这些意味着什么,什么是我们要求的最佳选择?任何意见/建议将不胜感激

感谢堆格雷格

cryptography certificate code-signing
3个回答
25
投票

出于“大多数目的”,建议使用以下选项:

  • Microsoft基本密码提供程序
  • 密钥大小:2048
  • 可导出:是
  • 受用户保护:是

老实说,我对不同的CSP并不熟悉,但是Base每次都为我完成这项工作。

  • 密钥大小使密钥更难破解,但是对于中短期密钥(3-5年),超过2048位就足够了(IMHO)。

  • 可导出,您可以导出私钥/证书对-对其进行备份必不可少!

  • 受用户保护意味着您每次想使用证书时都必须输入密码-强烈建议您使用证书来防止意外或恶意签名。


10
投票

历史上,“基本”密码提供程序对密钥长度有人为的限制,而“增强型”提供程序已取消了限制。这使Microsoft可以遵守美国出口法律,删除某些版本中的增强型提供程序。

显然,随着出口法律的变更,Microsoft已从基本提供者中删除了限制,允许更长的密钥长度(但是为了兼容起见保留了名称)


1
投票

关于“ Microsoft软件密码提供程序”-我认为应该是“强”(而不是“软件”)。

[在我实际工作的地方,base提供了512位密钥的长度(在最近的修补程序之后不再受支持或在MS服务器上工作-请在KB2661254上阅读)。您希望至少为1024,但最好选择2048。

[当心:需要可导出的私钥来备份和/或带到另一台服务器(我认为,这是签名代码/脚本所必需的),但是引入了将其落入错误手里的可能性,因此可能会签署不良脚本信任该证书后即可在您的服务器上运行!请注意在何处/如何存储它并使用强密码!

仔细检查:您很可能需要安装受信任的根CA证书(颁发代码签名证书的CA),以及在“受信任的发布者”中的证书本身,才能运行签名的PowerShell脚本。

© www.soinside.com 2019 - 2024. All rights reserved.