程序集签名,证书和密钥文件 - 需要这些吗?

时间:2013-01-02 06:59:38

标签: c# visual-studio-2010 deployment certificate strongname

我想开始签署我的程序集,以便将它们部署到GAC并在多个应用程序中共享/重用等。

Microsoft提供了大量文档,但它并没有真正向我解释 - 尤其是在那里添加ClickOnce部署之后。

有一个密钥和一个证书:我可以使用sn.exemakecert.exe自行创建这些,或者这些工具仅用于开发,我需要从CA获取它们(例如Verisign

密钥和证书有什么区别?

我可以为我的所有应用程序重用密钥和证书(这是我想要做的)吗?

我提供密钥/证书的名称(文件扩展名)? ClickOnce自动创建.pfx文件 - 是使用sn.exe创建的文件,还是.snk?

鉴于我的所有应用程序都是公司内部的,我们决定不使用ClickOnce而是通过MSI文件进行部署 - 我是否需要担心这一点?

我不需要将文件部署到GAC - 这只是我一直在阅读的内容。

1 个答案:

答案 0 :(得分:1)

您需要部署到GAC的是一个强名称签名。 .NET运行时使用强名称来标识程序集,并包含名称,版本和数字签名。强名称工具(.snk)可以生成强名称密钥文件(sn.exe)。获得密钥文件后,您可以使用该工具手动签署程序集或更改项目设置以在构建时自动签署程序集。

验证这些数字签名时不涉及证书颁发机构(CA)。没有什么可以阻止程序集使用不同的密钥进行任务,它只是不是你的密钥。我还要注意它们是不可撤销的,所以你应该保证它们的安全。

您当然可以对发布的所有程序集使用相同的密钥。

More强名签名。

数字签名(例如Authenticode)是一种可以识别程序集并具有一些附加功能的不同机制。它们可用于验证程序集未被篡改,并且证书可由CA撤销。 Makecert.exe是一个用于创建内部证书以进行测试的开发人员工具。