在我的Visual Studio解决方案中,我有一个网站和4-5个引用的类库项目,其中一些还引用了外部第三方程序集。
我被赋予了签署这些项目的程序集的任务。
我的理解是,签名的目的是不是每个人都能够在不提供公钥和版本详细信息的情况下使用我们的程序集,对吧?
我是应该使用一个强名称密钥(.snk)对这些项目的所有程序集进行签名,还是应该使用单独的强名称密钥对每个程序集进行签名?
强名称密钥的密码保护的目的是什么?
你会怎么做呢?
非常感谢,
发布于 2012-10-31 18:20:26
说,签名的目的是不是每个人都能够在不提供公钥和版本详细信息的情况下使用我们的程序集,对吗?
不是的。签名验证了您,即发布者。它可以防止其他人制作你的程序集的“假”版本。
我是应该使用一个强名称密钥(.snk)来对这些项目的所有程序集进行签名,还是应该使用单独的强名称密钥对每个程序集进行签名?
关键是你的签名,所以你的所有项目都要用1。
强名称密钥密码保护的目的是什么?
整个签名过程取决于你是唯一拥有密钥的人。不涉及任何证书。部分签名和受保护的密钥可以帮助您限制有权访问密钥的人数。
发布于 2019-01-11 10:41:30
强名称程序集的目的是能够区分同一程序集的不同版本,而不是确定它的创建者。
另一方面,对程序集进行数字签名可标识该程序集的生成器。
这两种签名之间的区别是,第一种签名不需要使用相同的证书,因为它不会被用来识别创建者,只是为了区分同一二进制文件的不同版本。
这样,您就可以在同一进程中加载同一程序集的两个版本,从而可以使用同一类的两个版本,而不会发生冲突。
另一个签名,称为代码签名,使用专门定制的证书,仅用于代码签名,并将带有通常标识生成器的名称的公共证书与证书链捆绑在一起,该证书链向证书颁发机构验证签名,该证书链可以使用Windows资源管理器在文件属性中看到,第一种情况在Windows资源管理器中看不到,它可以使用在visual studio中创建的自签名证书而不会出现任何问题。
实际上,数字签名代码适用于所有类型的代码,它不必是一个.NET程序集,它可以是一个普通的Win32 API DLL或EXE。
https://stackoverflow.com/questions/13155586
复制相似问题