使用 PFX 进行强命名

Posted

技术标签:

【中文标题】使用 PFX 进行强命名【英文标题】:Strong naming with PFX 【发布时间】:2012-01-03 00:25:15 【问题描述】:

我正在尝试使用PFX 文件对程序集进行强命名,该文件也用于数字签名。 PFX 证书具有 CodeSigning 选项,由 CA 提供。

当我尝试使用它时,我收到以下错误:

错误 MSB3325:无法导入以下密钥文件:myCert.pfx。密钥文件可能受密码保护。要更正此问题,请尝试再次导入证书或手动将证书安装到具有以下密钥容器名称的强名称 CSP:VS_KEY_B763CB2413AC1708

我尝试删除它并使用

重新安装 PFX
sn -d VS_KEY_B763CB2413AC1708
sn -i myCert.pfx VS_KEY_B763CB2413AC1708

但这没有用。我试图将证书放在证书存储中 - 这也没有改变任何事情。我尝试以管理员身份运行 Visual Studio,并从命令行执行 MSBuild。

我还尝试使用本地生成的证书(有效)延迟对程序集进行签名,然后使用

sn -R myAssembly.dll myCert.pfx

然后我得到以下错误:

Failed to re-sign the assembly -- Keyset does not exist

我在 ClickOnce Manifest Signing and Strong-Name Assembly Signing Using Visual Studio Project Designer's Signing Page, Signing Assemblies 中找到了代码签名证书的要求。看起来他们都遇到了,但我可能错过了一些东西。我该如何解决这个问题?

【问题讨论】:

FWIW,我的问题已通过以管理员身份运行 VS 得到解决——但我有一个已知良好的 .pfx 文件——你的 .pfx 文件在任何地方都可以使用吗?它是由 Visual Studio 生成的吗? (很久以前我通过命令行生成了我的,但我记得,为了让 Visual Studio 满意,为了获得所有细节,它使用了大约 10 个不同的命令和大约 3 个不同的工具包......并且在最后我得到了一个 .cer 和一个 .pfx 文件...) 【参考方案1】:

我希望这将有助于快速解决问题。前往

Visual Studio 项目属性 -> Signing -> 登录程序集 -> 选择一个强名称文件 ->(下拉)选择 Browse.. -> 选择 .pfx 文件 -> 好的**

瞧,你已经准备好执行你的项目了。

【讨论】:

我在 Visual Studio Community 2019 中没有看到任何“确定”选项【参考方案2】:

在解决方案资源管理器中选择启动项目 然后单击 Project --> Properties 以打开包含所有配置的选项卡。 选择左侧的签名选项卡 单击“创建测试证书”并输入密码。完成此操作后,“选择强名称文件”下拉列表中应该有一个新选项。选择此选项,保存并构建项目

【讨论】:

以上是关于使用 PFX 进行强命名的主要内容,如果未能解决你的问题,请参考以下文章

如何从 pfx / cer 创建 snk?

调试/引用强命名库

使用 pfx 和 Visual Studio 签署具有强名称的程序集

强名称 sn.exe:无法安装密钥对 -- 对象已存在

创建RC4 / DES SSL PFX

第三章 共享程序集和强命名程序集