问题标签 [authenticode]

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 投票
5 回答
29568 浏览

certificate - 代码签名(Microsoft Authenticode)

我有一个程序被大量并不总是超级计算机精通的人使用。我想确保不是让我的可执行文件说它来自未知作者,而是说它是由我签名的。

据我所知,这可以通过 Microsoft Authenticode 完成。我知道我需要一张证书才能做到这一点,并且正在寻找价格合理的证书。我偶然发现了Microsoft Authenticode Certificates页面。

看起来GlobalSign拥有我需要的一切。他们的证书有什么经验或有更好的公司吗?第一次做这个的人有什么好的教程吗?

0 投票
1 回答
367 浏览

signing - 签署非 PE 文件的通用方法

我知道 Windows 本质上可以检测和验证 PE 和某些类型的文本文件(.vbs、.ps 和 .wsf)的签名。但是我很好奇是否有办法以某种方式将签名附加或关联到不直接支持签名的文件,例如 .ISO 或 .zip 文件。

包含二进制文件和 .inf 文件的混合驱动程序包使用已签名的 .cat 文件来允许对其组成部分进行间接签名,但您必须使用“signtool.exe verify”来验证文件,我使用这种方法得到的结果好坏参半.

我想我正在寻找某种签名的清单文件,我们可以使用它来让用户轻松验证他们下载的文件集在传输过程中或被第三方损坏,并且不涉及他们创建MD5 手动并将结果与​​存储在文本文件中的值进行比较(这也可能被欺骗了)。

0 投票
1 回答
1156 浏览

clickonce - 如何签署 VSTO 部署?

客户购买了一个代码签名证书,它带有一个.pvk文件和一个.spc文件。我熟悉该.pvk文件,但 Visual Studio 无法识别该.spc文件。

当我尝试将.spc文件加载为 ClickOnce 证书时,一个消息框显示“所选文件不包含私钥。您必须选择包含私钥的证书。”

是客户买错了东西,还是我没找对地方?

0 投票
1 回答
2979 浏览

asp.net - 为什么使用签名证书时出现 ActiveX“未知发布者”错误?

尽管研究了我在网上找到的几篇关于该主题的文章,但我一直在努力尝试让一个简单的ActiveX DLL 工作但没有成功。

我怀疑我有几件事编码不正确,因为我对此并不熟悉,而且大多数关于该主题的文章都已过时。我正在使用Visual Studio 2008,并且一直在使用Windows SDK v7.1 进行数字签名。

我想要做的是将客户端 machineName 从环境类返回到网页(并最终返回到 Web 服务器)。

这是我的 C# 类:

这是我的组装:

这是我网站母版页上的对象标签和脚本。**注意:我收到错误

Microsoft JScript 运行时错误:自动化服务器无法创建对象

关于“var”执行**:

然后我手动创建了一个 .inf 文件,如下所示:

但是,当我构建我的.cab文件时,我也得到一个.OSD文件输出.cab如下(我担心同一个文件中同时存在一个文件.inf和一个文件。这是正确的,它会导致问题吗?我不知道如何告诉 Visual Studio 不要构建文件。.OSD.cab.OSD

无论如何,试图拼凑所有细节是一场噩梦。对于解决此问题的任何帮助,我将不胜感激。

好的,代码项目文章A Complete Scriptable ActiveX Web Control Tutorial Using ATL是我用作签署.cab文件的指南。请参阅标题为“签署 cab 文件”的部分。

这是我使用的命令。请注意,我使用 Visual Studio 创建 cab 文件而不是 CABARC。另请注意,我仅使用测试证书:

用于certmgr将“根代理”证书导出​​和导入到受信任的根证书:

请注意,我将我的 DLL 复制到我的 Windows SDK 文件夹,对其进行签名,将其复制回我的cab文件,然后我将其复制到我的 SDK 文件,对cab文件进行签名。最后,我将文件复制cab到我的网站项目中。

注意:请参阅第一个答案末尾的评论。我从Comodo购买了签名证书并安装了该证书,即使证书状态为“OK”,我现在也会收到“Unknown Publisher”错误。DLL 和 CAB 文件均已签名。

我相信我现在的问题是控件需要被标记为安全的脚本。我发现了最近的一篇文章,使用 C# 在 .NET 中创建 ActiveX 控件,看起来很有帮助。

0 投票
1 回答
209 浏览

security - 构建服务器上的安全 Authenticode 密钥

我试图弄清楚如何最好地在我的工作场所设置 Authenticode 签名。安全隐患让我压力山大。

我最初的想法是控制密钥的人应该将它安装到构建服务器并保护它,以便只有构建帐户可以访问它。

这看起来相当安全,但实际上并非如此。是的,此时您不能窃取证书,但如果您可以创建构建,您可以获得构建帐户来签署任何二进制文件。

有熟悉流程的大神指点一下吗?

0 投票
1 回答
1175 浏览

msbuild - 如何使用 msbuild(或命令行)修改可执行文件的“文件描述”?

我有一个为我生成可执行文件的第 3 方应用程序,但它会将自己的名称放入可执行文件的“文件描述”和“产品名称”详细信息中。

当我使用身份验证代码对这些进行签名时,它会导致用户提示显示第 3 方应用程序名称而不是我自己的名称,即使它是使用我公司的证书签名的。

有没有办法从命令行修改这个,使用一些 msbuild 任务?我知道在编译之前有一些任务会这样做——但在这种情况下,我没有编译,我所拥有的只是最终的可执行文件。

0 投票
1 回答
1019 浏览

windows - 为什么在查看证书详细信息之前,数字签名的可执行文件会被视为未签名

运行经过数字签名的可执行文件时,我得到了一个非常奇怪的结果。

可执行文件是使用 signtool.exe 使用适当的 2 级代码签名证书(不是自行生成的)进行签名的。

在 Windows 7 机器上进行测试,如果我启动已签名的可执行文件,我会收到 Windows 警告对话框,显示 Publisher Unknown(即未签名)。

但是,如果我随后取消并右键单击可执行文件并转到“属性”->“数字签名”,“签名”列表会显示已签名的证书,然后我可以单击并选择“详细信息”以查看签名的详细信息,其中显示为“数字签名正常”。

那时,如果我启动可执行文件,现在 Windows 会突然正确识别出可执行文件已签名并报告正确的“已验证发布者”。

似乎在我从可执行文件的属性对话框中查看实际证书详细信息之前,Windows 可能没有在线检查证书(请注意,这不仅仅是启动可执行文件后的延迟,我等待多长时间都没关系或者我启动它多少次,它会将其视为未签名,直到我进入文件的属性/数字签名)。

这是我用于测试的通用 Windows 7 安装 - 它没有以任何方式进行修改或调整。

这种行为似乎违背了在 Windows 上进行代码签名的主要目的——除非用户知道进入右键单击属性并四处寻找证书,否则可执行文件怎么可能被视为未签名。

有什么我想念的吗?将可执行文件标记为 Windows 应在执行时主动检查证书的某种方式?

0 投票
1 回答
6392 浏览

.net - .NET:强命名与 Authenticode

例如,在阅读了 .NET here中的强名称后,我有以下问题:

我们有一个Authenticode代码签名证书,我们用它来签署我们所有的 EXE、DLL 和 MSI 文件。这样做的好处是 Windows 知道 MSI 来自受信任的来源,并且可以根据需要验证每个文件的真实性。

我们目前不使用.NET 强名称。我已经读过强命名文件本质上意味着它是使用自签名证书进行数字签名的。我对此的看法是,由受信任的证书颁发机构签名的 Authenticode 证书比自签名证书更有价值,因为自签名证书的真实性没有人可以验证,因为它们缺少根证书(我们不会将其分发给最终用户,我们是!?)。

问题:如果已经使用了 Authenticode 签名,那么其他强命名程序集是否有任何价值?

0 投票
1 回答
1791 浏览

c - 验证 Authenticode 签名为来自我们公司的自动更新程序

我正在实现自动更新功能,需要一些关于如何使用最佳实践安全地执行此操作的建议。我想使用下载文件的 Authenticode 签名来验证它是否可以安全运行(即来自我们公司并且没有被篡改)。我的问题与问题#2008519 非常相似。

底线问题:检查 Authenticode 签名以获得自动更新功能的最佳、最安全的方法是什么?应该检查证书中的哪些字段?要求是:(1)检查签名是否有效,(2)检查它是我的签名,(3)当我的证书过期并且我得到一个新的时,旧客户端仍然可以更新。

以下是我研究的一些背景信息/想法:我相信这可以分为两个步骤:

  1. 验证签名是否有效。我相信这应该很容易使用http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx中概述的 WinVerifyTrust - 我不希望这里有问题。

  2. 验证签名对应于我们公司,而不是其他公司。这似乎是一个更难回答的问题:

一种可能性是检查签名中的一些字符串。可以通过 MS 知识库文章 #323809 中的代码获得,但本文并未就此类应用程序(或任何其他)应检查哪些字段提出建议。 问题 #1072540还说明了如何获取一些证书信息,但同样不建议实际检查哪些字段。我担心字符串可能不是最好的检查:例如,如果另一个人能够获得同名的证书怎么办?或者如果我们有正当理由在未来改变字符串?

问题#2008519的人有一个非常相似的要求。他对“TrustedByUs”功能的需求与我的相同。但是,他通过比较公钥来进行检查。虽然这在短期内可行,但它似乎不适用于自动更新功能。这是因为代码签名证书的有效期最长为 2 - 3 年。因此,未来我们在2年后购买新证书时,由于公钥的变化,旧客户端将无法再更新。

0 投票
1 回答
6417 浏览

dll - 我应该签署我的 DLL 吗?

我有一个 C++ Windows 应用程序。我签署了我们的安装程序和我的可执行文件,但我目前没有签署我的 DLL(例如 zlib1.dll)。签署这些也没什么大不了的,但是有人可以解释一下有什么好处吗?例如,如果所有依赖项都已签名,我的程序与 AV 或防火墙软件是否会有所不同?用户会收到任何不同的警告吗?