【问题标题】:How to create a snk for .NETCore in Linux for Strong Named Assemblies如何在 Linux 中为强命名程序集创建 .NETCore 的 snk
【发布时间】:2018-09-05 11:18:23
【问题描述】:

我使用 CentOS 7 使用 JetBrains Rider IDE 编写 .NETCore 服务器。

我需要为 .NETCore 2.0 创建一堆强命名程序集(库项目)。我知道在 Windows 上我可以使用sn.exe 工具来创建snk 密钥文件。谁能详细说明如何在 CentOS 机器上执行此操作?

我找到了一个也称为 sn (see man page) 的单声道二进制文件,它似乎是 sn.exe 等价的,但它似乎很老了(2003 / 2004),我不确定,如果它是工具一应该使用TODAY

我还需要与官方(来自商业供应商)code signing certificate签署一些 DLL。我不明白snk 文件和我获得的证书之间的关系(它有一个p12 扩展名)。

通过一点研究,我读到,在我的 .csproj 文件中,我需要将以下标签添加到建议 MSBUILD 以创建强命名程序集:

<AssemblyOriginatorKeyFile>MyKey.snk</AssemblyOriginatorKeyFile>
<SignAssembly>True</SignAssembly>

如果有人能解释如何(在CentOS 7 以.NetCore 2.0 为目标),我将不胜感激:

  1. 创建强命名程序集

  2. 使用现有商业证书签署程序集

请注意,我没有使用 VisualStudio(您有 UI 工具)!

【问题讨论】:

    标签: .net-core rider


    【解决方案1】:

    sn -k sgKey.snk

    https://docs.microsoft.com/en-us/dotnet/framework/app-domains/how-to-create-a-public-private-key-pair

    它适用于 Linux。应该安装单声道。尝试使用 .Net Core 2.2


    一些有用的命令:

    创建密钥对:sn –k private.snk

    提取公钥:sn –p private.snk public.snk

    查看公钥和公钥令牌:sn –tp public.snk

    查看程序集的公钥和公钥令牌:sn –Tp assembly.dll

    从程序集中提取公钥:sn –e assembly.dll public.snk

    验证程序集是否已签名以及使用什么密钥:sn –vf assembly.dll

    显示注册跳过验证的机器上的程序集列表:sn –Vl

    注册程序集以跳过验证:sn –Vr * (must elevate)

    使用密钥对退出程序集:sn –Ra assembly.dll private.snk

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多