代码签名证书选项

时间:2008-10-30 23:52:13

标签: cryptography certificate code-signing

我被指派为公司购买数字证书以签署我们的代码。我们在Microsoft领域开发应用程序 - 主要是WPF或基于Web。

我已经调查了选项,发现Comodo价格合理且响应迅速,我们已准备好继续通过它们购买证书..但是在注册表单中有各种私钥选项,我不是太确定了,即:

  1. CSP

    • Microsoft Base Cryptographic Provider
    • Microsoft Base智能卡加密提供程序
    • Microsoft Enhanced Cryptographic Provider v1.0
    • Microsoft软件加密提供程序
  2. 密钥大小

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

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

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

    谢谢堆 格雷格

3 个答案:

答案 0 :(得分:22)

对于“大多数用途”,建议使用以下选项:

Microsoft Base Cryptographic Provider 钥匙尺寸:2048 可出口:是的 用户保护:是

老实说,我不熟悉不同的CSP,但Base每次都为我做这份工作。

密钥大小使密钥更难破解,但短期到中期密钥(3 - 5年)超过2048位是充足的(恕我直言)。

Exportable允许您导出私钥/证书对 - 这对备份至关重要!

用户保护意味着您每次要使用证书时都必须输入密码 - 强烈建议您使用证书进行意外或恶意的代码签名。

希望这有帮助。

答案 1 :(得分:10)

从历史上看,“基础”加密提供程序对密钥长度有人为限制,“增强”提供程序已删除限制。这允许Microsoft遵守美国出口法律,删除某些版本的增强型提供商。

显然,随着出口法的变化,微软已经从基础提供商中删除了限制,允许更长的密钥长度(但保留了兼容性的名称)

答案 2 :(得分:1)

关于“Microsoft软件加密提供商” - 我认为应该是“强大”(而不是“软件”)。

在我工作的实践中,base提供了512位密钥长度(在最近的补丁之后不再支持或在MS服务器上工作 - 在KB2661254上读取)。你想要至少1024,但2048是更好的选择。

注意:需要可导出的私钥来备份和/或带到另一台服务器(并且我认为需要对代码/脚本进行签名),但是会引入它可能性落入坏人之手,因此不需要的脚本可能是一旦您信任该证书,就在您的服务器上签名并运行!在存储它的地方/方式时要特别小心,并使用强大的密码!

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