【问题标题】:Code Signing Certificate Options代码签名证书选项
【发布时间】:2010-09-20 02:42:06
【问题描述】:
我的任务是为我的公司购买数字证书以签署我们的代码。我们在 Microsoft 领域开发应用程序 - 主要是 WPF 或基于 Web。
我已经调查了选项,发现 Comodo 价格合理且响应迅速,我们已准备好继续通过它们购买证书。但是在注册表单中有各种我不知道的私钥选项太确定了,即:
-
CSP
- Microsoft 基础加密提供程序
- Microsoft Base 智能卡加密提供程序
- Microsoft 增强加密提供程序 v1.0
- Microsoft 软件加密提供程序
-
密钥大小
-
可导出?
-
用户受保护?
只是想知道这一切意味着什么,什么是满足我们要求的最佳选择?任何意见/建议将不胜感激
谢谢大家
格雷格
【问题讨论】:
标签:
cryptography
certificate
code-signing
【解决方案1】:
对于“大多数用途”,建议使用以下选项:
- Microsoft 基础加密提供程序
- 密钥大小:2048
- 可导出:是
- 用户保护:是
说实话,我不熟悉不同的 CSP,但 Base 每次都为我完成这项工作。
密钥大小使密钥更难破解,但中短期密钥(3-5 年)超过 2048 位就足够了 (恕我直言)。
Exportable 可让您导出私钥/证书对 - 对备份至关重要!
用户保护意味着您每次要使用证书时都必须输入密码 - 强烈建议您使用您的证书防止意外或恶意签署代码。
【解决方案2】:
从历史上看,“基本”加密提供者对密钥长度有人为限制,而“增强”提供者则取消了限制。这使 Microsoft 能够遵守美国出口法律,在某些版本中删除了增强的提供程序。
显然,随着出口法的变化,微软已经取消了对基本提供程序的限制,也允许更长的密钥长度(但为了兼容性而保留了名称)
【解决方案3】:
关于“Microsoft Software Cryptographic Provider”——我认为应该是“强大”(而不是“软件”)。
在我工作的实践中,base 提供了 512 位的密钥长度(在最近的补丁之后不再支持或在 MS 服务器上工作 - 阅读 KB2661254)。您至少需要 1024,但 2048 是更好的选择。
注意:可导出的私钥是备份和/或带到另一台服务器所需要的(我认为是签署代码/脚本所必需的),但它可能会落入坏人之手,因此可能会出现不受欢迎的脚本一旦您信任该证书,就在您的服务器上签名并运行!非常小心存储它的位置/方式,并使用强大的密码!
仔细检查:您很可能需要在“受信任的发布者”中安装受信任的根 CA 证书(颁发代码签名证书的 CA)以及您的证书本身才能运行签名的 PowerShell 脚本。