You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下如何利用带密码pfx实现.NET程序集强名称签名

强名称签名解决方案(Linux DevContainer环境)

流程1:转换密钥并在.csproj中引用

  • 从PFX提取密钥生成SNK文件
    • 导出私钥PEM:
      openssl pkcs12 -in aPasswordProtected.pfx -nocerts -out private.key -nodes -passin pass:你的密码
      
    • 导出公钥PEM:
      openssl pkcs12 -in aPasswordProtected.pfx -nokeys -out public.cer -passin pass:你的密码
      
    • 合并生成SNK文件:
      sn -i private.key public.cer output.snk
      
      若sn命令无响应,改用mono sn.exe执行
  • 修改项目文件引用SNK
    在something.csproj中添加以下配置:
    <PropertyGroup>
      <SignAssembly>true</SignAssembly>
      <AssemblyOriginatorKeyFile>output.snk</AssemblyOriginatorKeyFile>
    </PropertyGroup>
    
  • 编译签名程序集
    dotnet build
    

流程2:先编译未签名程序集再签名

  • 编译未签名程序集
    临时修改something.csproj关闭签名:
    <PropertyGroup>
      <SignAssembly>false</SignAssembly>
    </PropertyGroup>
    
    执行编译:
    dotnet build --no-restore
    
    未签名的something.dll默认生成在bin/Debug/netX.X/目录(X.X为你的.NET版本)
  • 生成SNK文件(同流程1的密钥提取步骤)
  • 用sn工具签名程序集
    sn -R bin/Debug/netX.X/something.dll output.snk
    
    若命令无效,改用mono sn.exe -R ...

流程3:直接用PFX一站式编译签名

该方式仅支持.NET Core 3.0及以上版本

  • 修改something.csproj添加签名配置:
    <PropertyGroup>
      <SignAssembly>true</SignAssembly>
      <AssemblyOriginatorKeyFile>aPasswordProtected.pfx</AssemblyOriginatorKeyFile>
      <DelaySign>false</DelaySign>
    </PropertyGroup>
    
  • 编译时传入PFX密码:
    dotnet build /p:KeyPassword=你的密码
    

内容的提问来源于stack exchange,提问作者Sebastian Meine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 19:16:35