问题标签 [strong-named-key]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
401 浏览

msbuild - MSB3073 命令以 1 退出

在签署 dll 文件命令时成功执行但对于 .exe 文件我收到错误“命令以 1 退出”。

exec Command="SN-R demo.dll ..\key.snk" exec Command="SN-R demo.exe ..\key.snk"

请帮我解决这个问题

0 投票
1 回答
989 浏览

c# - 如果将已签名的 DLL 替换为未签名的 DLL,会发生什么?

我们有一堆具有强名称的库并被放置在 GAC 中。我们正试图摆脱这种做法。这是我目前需要解决的情况。

我有一个我无法正确签名或强名称的 DLL(替换现有和签名的一个,相同名称和整体结构),因为我们无法复制密钥。我将使用未签名版本重新编译组件/代码,然后使用未签名副本部署它,使用 . 如果从 GAC 中删除签名副本,其他组件(谁会使用相同的探测)会在不重新编译的情况下使用新的组件,还是仍然需要签名版本?

谢谢你。

0 投票
1 回答
177 浏览

c# - 延迟签名的程序集链

我正在开发一个 C# .NET 程序集(名称:A.exe),它需要延迟签名,然后由第三方公司完全签名。为了延迟签名,我使用公钥。程序集 A 引用程序集 B.Core.dll、B.Common.dll、B.Logging.dll,它们是公共库的一部分。B 程序集没有延迟签名,所以我使用 ildasm/ilasm 对它们进行反汇编并重新组装延迟签名。我提交了 A.exe 和 B.Core.dll、B.Common.dll、B.Logging.dll,它们现在已完全签名,但是当 A 启动时它抱怨错误:

无法加载文件或程序集 'Assembly B1 PublicKeyToken= null'

这个问题不应该与 A.exe 相关,因为它引用了延迟签名的程序集(它们的 Strong Name 属性设置为 True),但我怀疑罪魁祸首是 B.Core。
事实上,B.Core 引用了 B.Common 和 B.Logging,而 B.Common 和 B.Logging 是相互独立的。
错误的原因可能是 B.Core 最初是使用未签名的 B.Common 程序集构建的,然后对所有三个程序集进行反汇编和重新组装并没有更改引用...为了解决问题,我是想做的是将所有四个程序集合并为一个延迟签名程序集,作为 A 的后期构建步骤。你认为它会工作吗?
要记住的一件事是 B.Core 使用 .NET MEF 动态加载从 A 导出的接口。这个过程会出现任何问题吗?

在此先感谢您的帮助

0 投票
4 回答
673 浏览

obfuscation - 防止某人加载我的托管程序集的最简单方法?

.Net security noob here...阻止其他人加载我的程序集的最简单方法是什么?

背景:虽然我真的在寻找“足够好”的保护(有足够的时间/金钱/聪明,有人可以成功破解、破解和攻击),但这似乎应该已经是一个已解决的问题,而我只是想念它。

这是我(认为)我知道的:

  1. 根据这个微软文档,虽然强命名可以用作一层安全性,但不一定是这样的(请参阅警告:不要依赖强名称来保证安全。它们仅提供唯一身份。)

    在那^注意,我遇到了无法加载第三方程序集的情况(假设我认为是),因为他们没有签署他们的程序集,但我的所有程序集都是。所以我不得不 ildasm 他们的程序集,用我们自己的 snk 签名,然后 ilasm 回来)才能使用他们的图书馆。所以,强命名对我来说似乎不是一个好的安全机制。 但是......在代码中进行简单检查以验证调用程序集是否使用我的公钥令牌进行了签名?这足够有效吗?

  2. 如果不应该将强命名用于我要完成的工作,那么在 dll 上实施 Authenticode 数字签名检查是否是更好的路由(似乎 wintrust.dll 可以帮助解决这个问题)?

    我一直在使用几个供应商的混淆工具,其中许多都带有许可和各种东西。我可能会使用一些混淆来隐藏一些敏感部分,但是我仍然希望有一种机制来防止有人加载我的敏感库,而不必使用字符串和代码加密等功能,这些功能通常会带来性能(和其他)费用。

回到这个问题,阻止某人加载我的程序集的最简单方法是什么?

0 投票
0 回答
209 浏览

c# - 单元测试强命名类库

我正在为一个类库编写一些单元测试,该类库通常在内部作为 nuget 包发布。我在解决方案中添加了一个类库(到目前为止,它只有一个其他类库项目),并添加了对 NUnit 和要测试的项目的引用。

我添加了一个非常简单的测试,它创建了一个类的实例,但它立即失败并出现以下错误:

提供nuget包代码主体的类库有一个key.snk文件和一个CompanyNamePublic.snk文件。

我需要做什么才能向此解决方案添加单元测试?

0 投票
1 回答
158 浏览

c# - 以编程方式将强名称密钥 (.pfx) 文件添加到项目中

我能够创建一个自签名证书并使用 makecert 和 pvk2pfx从代码生成一个 .pfx 文件。我可以以编程方式编辑项目文件(使用正则表达式,尽管 xmlreader 实现也可能工作并且可能更安全)来编辑项目文件。但是,在我添加 .pfx 文件并将签名设置为 true 后,项目不再构建,因为我需要打开 VS 输入私钥的密码。

我想知道是否可以在创建 .pfx 文件后以编程方式将 .pfx 文件添加到项目中,无需打开 VS 输入密码。

0 投票
2 回答
1085 浏览

c# - 仅从公钥创建 RSACryptoServiceProvider

我正在使用密钥对签署我的 XML(使用 SignedXml),并将公钥作为嵌入式资源嵌入到我的应用程序中。

在这里我如何创建密钥对

当我尝试阅读时,WarehousePublic.snk我得到一个异常错误版本的提供程序。

这是我的代码:

有没有办法只从公钥创建RSACryptoServiceProvider ?

我也尝试过使用 X509Certificate2

但我得到异常找不到请求的对象。

任何想法?

谢谢

0 投票
1 回答
44 浏览

vb.net - 引用 Twilio dll 时需要自签名证书

我正在尝试与 Twilio 集成以从我们的应用程序发送短信。我按照他们网站上的说明进行了 nuget 安装。当我尝试运行任何引用 dll 的东西时,我收到了这条消息:

在此处输入图像描述

在此处输入图像描述

Sign the Assembly在项目中取消选中并修复了这个问题,但我没有更改项目文件的自由。

在此处输入图像描述

如何在不取消选中此选项的情况下解决此问题?

0 投票
0 回答
733 浏览

visual-studio - 错误MSB3325:无法导入以下密钥文件,重新启动问题

我将密钥对安装到密钥容器中。然后我就可以建造了。如果我重新启动计算机,则会再次收到错误消息。

至少在我重新启动计算机之前,解决方案是打开管理命令提示符并输入以下命令:

第一个命令删除现有的键,因为它是存在的,而第二行添加键。系统提示我输入密码。之后,解决方案构建。

Visual Studio 版本没有区别,因为我在 VS2017 上遇到了同样的问题。

想法?

0 投票
2 回答
61 浏览

c# - .Net DLL 引用错误(强名称符号后)

这是我的场景。我很少有使用 ABCD.dll(用 C# .net 编写)的应用程序,这个旧 DLL 没有强名称签名。

我修改了这个dll,基本上保持同名ABCD.dll,并用密钥签名。请注意没有代码更改

我想我应该能够将这个新更新的 DLL 放到不同的应用程序文件夹中,它应该可以工作。我错了吗?

我收到以下错误

如何在不编译所有旧应用程序的情况下使用这个新的 dll?