增强型强名称 (SNK) 和个人交换格式 (PFX) 之间有什么区别,应在何时使用?
What is the difference between Enhanced Strong Name (SNK) and Personal Exchange Format (PFX) and when should each be used?
此问题是以下问题的延伸:
- Should each project being signed with a separate Strong Name Key (.snk)?
- snk vs. code signing certificate
- Any reason to ship .snk file with the project sources?
- https://docs.microsoft.com/en-us/dotnet/standard/assembly/enhanced-strong-naming
我正在查看自定义程序集的强命名及其代码签名,并阅读了各种 SO 帖子(见上文)和 MSDN。我了解以下内容:
- 强命名程序集无需密码 创建一个 SNK 文件并仅标识程序集的发布者,以便它可以部署到 GAC 并减轻所谓的
DLL Hell
由来自不同出版商的同名程序集引起。
- 强命名程序集使用密码 将代码签名添加到程序集并创建 PFX 文件,而不是 SNK 文件。这既可以识别发布者,也可以验证代码未被篡改。注意:此文件可以由 Verisign 和 Digicert 等受信任的证书颁发机构创建并导入,也可以是在组织内创建的自签名证书。自行创建 PFX 与创建强命名程序集的步骤相同,但您只需为其添加密码。
- 增强型强命名对我来说似乎有点神秘。它涉及创建一个强命名的 SNK 文件(即无密码),然后从中提取私钥。它似乎只是为了允许从已弃用的哈希算法迁移。
我理解2是1的逻辑扩展,我上面的理解对吗?但是,上面的2和3有什么区别呢? 3 是否比 1 有任何优势,还是它只是一种允许跨算法迁移的方法?换句话说,我想 2 和 3 的存在是出于不同的原因;那是什么reason/implementation?
对 1 的补充:您需要强命名以确保未引用任何未签名的程序集。您可能不想使用 GAC。
对 2 的更正:代码签名 != 强命名。对于强命名,请使用 sn.exe
创建密钥。对于代码签名,需要一个带有私钥的 x.509 数字证书。证书本身没有密码。 PFX/PKCS#12 容器格式使用密码来保护私钥。其他选项。像例如可以使用智能卡或令牌。
所以 2 不是 1 的扩展。3 的优点是使用更好的哈希算法和两个而不是一个签名。
此问题是以下问题的延伸:
- Should each project being signed with a separate Strong Name Key (.snk)?
- snk vs. code signing certificate
- Any reason to ship .snk file with the project sources?
- https://docs.microsoft.com/en-us/dotnet/standard/assembly/enhanced-strong-naming
我正在查看自定义程序集的强命名及其代码签名,并阅读了各种 SO 帖子(见上文)和 MSDN。我了解以下内容:
- 强命名程序集无需密码 创建一个 SNK 文件并仅标识程序集的发布者,以便它可以部署到 GAC 并减轻所谓的
DLL Hell
由来自不同出版商的同名程序集引起。 - 强命名程序集使用密码 将代码签名添加到程序集并创建 PFX 文件,而不是 SNK 文件。这既可以识别发布者,也可以验证代码未被篡改。注意:此文件可以由 Verisign 和 Digicert 等受信任的证书颁发机构创建并导入,也可以是在组织内创建的自签名证书。自行创建 PFX 与创建强命名程序集的步骤相同,但您只需为其添加密码。
- 增强型强命名对我来说似乎有点神秘。它涉及创建一个强命名的 SNK 文件(即无密码),然后从中提取私钥。它似乎只是为了允许从已弃用的哈希算法迁移。
我理解2是1的逻辑扩展,我上面的理解对吗?但是,上面的2和3有什么区别呢? 3 是否比 1 有任何优势,还是它只是一种允许跨算法迁移的方法?换句话说,我想 2 和 3 的存在是出于不同的原因;那是什么reason/implementation?
对 1 的补充:您需要强命名以确保未引用任何未签名的程序集。您可能不想使用 GAC。
对 2 的更正:代码签名 != 强命名。对于强命名,请使用 sn.exe
创建密钥。对于代码签名,需要一个带有私钥的 x.509 数字证书。证书本身没有密码。 PFX/PKCS#12 容器格式使用密码来保护私钥。其他选项。像例如可以使用智能卡或令牌。
所以 2 不是 1 的扩展。3 的优点是使用更好的哈希算法和两个而不是一个签名。