标签: authenticode

在Windows SDK 7.0的signtool中,signwizard发生了什么?

我在signtool.exe中寻找方便的signwizard,但在Windows SDK 7.0中找不到它.
它现在是一个单独的工具还是仅剩下CLI?

winapi authenticode codesign signtool

5
推荐指数
1
解决办法
4297
查看次数

执行.NET应用程序时验证authenticode签名

我觉得我在这里遗漏了一些明显的东西,但我不认为它写在任何地方.

我使用Authenticode证书签署我的可执行文件,但是当我开始学习更多关于它的信息时,我正在质疑它的价值.

  • 签名的exe具有数字证书,该证书显示为"有效"证书.当您从互联网上下载此类文件时,它会在Windows中显示一条警告,提示您即将从Xyz Corporation发布的可能不安全的位置运行程序.
  • 如果没有签名,下载的文件将提供一个完全不同的警告框,说明该文件不受信任

现在,我关心的是:

  • 如果更改了签名的exe,当您进入"属性">"数字签名">"选择签名">"详细信息..."时,将显示"此数字签名无效".这是一个非常模糊的方式来查看可能是一个严重问题,以及一个巨大的指标,你不应该运行该文件.

    • 如果您从Windows运行此文件(未下载),它将运行正常.没有任何警告或任何迹象表明存在问题
    • 我没有检查如果你下载文件然后尝试运行它会发生什么.
  • 如果从文件中剥离签名(使用delcert),则表示没有任何错误.同样,您可以运行该文件,并且在属性对话框中不会显示任何证书.


为了使这更有用,我认为签名文件需要验证自己.启动时,应检查是否存在有效签名,并且签名的sha1指纹可能与Xyz Corporation证书的预期签名匹配.

(当然,这仍然无法处理有人剥离证书,然后编辑文件以删除证书检查的情况)


我找不到任何人在谈论如何做到这一点(至少不是在.NET中,当然也不是像我期望的那样简单的API调用) - 所以这导致了几个问题:

  1. 有没有理由不检查签名?没有这项检查,还有哪些其他好处?
  2. 是否试图将签名验证为篡改检测手段如此徒劳,以至于尝试无意义?
  3. 如何检查.NET中当前可执行文件的证书?

.net authenticode

5
推荐指数
1
解决办法
1615
查看次数

使用OpenSSL API验证Authenticode签名的可执行文件和DLL

我已经安装了openssl,现在rsa_test.c运行正常.我想做的是:

  1. 打开任何exe或dll数字证书.提取指纹PublicKey.公钥也包含指数(如果您熟悉ASN1编码).

  2. 现在我已经计算了文件的SHA-1哈希,并将其与MD字段进行比较,以确定它是否正确.所以现在我想将Thumbprint,PublicKey-> mPublicKey-> e传递给RSA_public_decrypt函数来计算文件的解密SHA-1哈希值.

我应该将哪种填充算法传递给函数?当我传递RSA_NO_PADDING时,它会解密,但会给我128字节长的哈希,这根本不正确.对于所有其他填充算法选项,它返回未找到填充的错误.

你能教我或者告诉我通过这个函数传递函数的正确参数吗?

c openssl cryptography rsa authenticode

5
推荐指数
1
解决办法
1917
查看次数

使用 SmartScreen 过滤器的代码签名证书信誉

我正在使用标准(即不是 EV)Authenticode 代码签名证书来签署 Windows 桌面应用程序,希望 Smartscreen 过滤器最终会停止阻止它。

我希望对应用程序进行认证,但由于我的代码签名证书是由 GoDaddy 颁发的,因此我似乎无法做到这一点,因为您需要来自Symantec、Entrust、GlobalSign、WoSign 或 Digicert 的证书才能创建 Windows 认证仪表板帐户(认证过程的第一步)。

所以这是我的问题:使用标准 GoDaddy SHA-2 代码签名证书签名的非认证 Windows 应用程序是否仍会积累声誉?

code-signing authenticode smartscreen

5
推荐指数
1
解决办法
1262
查看次数

从 Windows 中的 PE 可执行文件中检索双重签名信息的修正代码?

我一直在努力修改来自 Microsoft 的此代码示例该示例显示(有些过时)如何从可执行文件中检索代码签名信息。它可以工作,但如果二进制文件是双重签名的,则它不会检索信息。

所以我做了一些研究并尝试重写它以使其识别 Windows 中许多现代可执行文件中存在的双重签名。不幸的是,很少有(模糊的)建议可用(1),(2),例如使用UnauthenticatedAttributesszOID_NESTED_SIGNATURE(无论这意味着什么)但仅用于检索时间戳的建议。

所以我试图重写那个微软代码,这是我得到的:

(要构建它,只需将其复制到 Visual Studio 控制台项目中并更改 .exe 文件路径。处理双重签名的代码在PrintDualSignatureInfo()函数中。)

#include "stdafx.h"

//SOURCE:
//      https://support.microsoft.com/en-us/help/323809/how-to-get-information-from-authenticode-signed-executables
//

#include <windows.h>
#include <wincrypt.h>
#include <wintrust.h>
#include <stdio.h>
#include <tchar.h>
#include <atlconv.h>

#pragma comment(lib, "crypt32.lib")

#define ENCODING (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING)

typedef struct {
    LPWSTR lpszProgramName;
    LPWSTR lpszPublisherLink;
    LPWSTR lpszMoreInfoLink;
} SPROG_PUBLISHERINFO, *PSPROG_PUBLISHERINFO;



BOOL GetProgAndPublisherInfo(PCMSG_SIGNER_INFO pSignerInfo,
                             PSPROG_PUBLISHERINFO Info);
BOOL GetDateOfTimeStamp(PCMSG_SIGNER_INFO pSignerInfo, SYSTEMTIME *st);
BOOL PrintCertificateInfo(PCCERT_CONTEXT pCertContext);
BOOL GetTimeStampSignerInfo(PCMSG_SIGNER_INFO …
Run Code Online (Sandbox Code Playgroud)

c++ winapi code-signing authenticode digital-signature

5
推荐指数
1
解决办法
1359
查看次数

MSI - 卸载提供"Unidentified Publisher"

我使用Visual Studio 2008创建了一个MSI安装程序.然后我使用signtool.exe和我的authenticode证书对此进行签名.

在Vista x64测试PC上,当运行MSI时,会出现预期的对话框,将我的公司标识为发布者.

但是,从"添加/删除程序"中卸载程序时,将显示黄色的"Unidentified Publisher"对话框.

有没有办法让卸载过程签名?谷歌没有出现任何有用的东西.

非常感谢,

克里斯

windows-installer uninstall authenticode

4
推荐指数
1
解决办法
1832
查看次数

从具有多个签名的签名可执行文件中读取证书数据

微软正在远离SHA1.结果,许多可执行文件现在具有两个或更多个签名; 一个使用SHA1摘要以实现向后兼容,另一个使用SHA256.

例如,如果您查看vstest.executionengine.exeVisual Studio 2013的属性(查看Windows 8或Server 2012上的属性),您将看到它有来自3个不同证书的3个不同签名.

我已经有一个使用的组合代码CryptQueryObject,CryptMsgGetParam和.NET SignedCms,但它只能看到3个签名1.一个签名者似乎只有一条消息.

我需要获取所有签名的证书信息.如何对多个签名进行建模 - 是单个消息中的多个消息还是多个签名者?Microsoft是否添加了新的API或新标志来访问多个签名?

sha1 sha256 authenticode cryptoapi digital-signature

4
推荐指数
1
解决办法
553
查看次数

.NET ClickOnce签名会导致“未知发布者”

我正在努力在.NET 4.5上部署ClickOnce应用程序构建,这是事实:

  1. 我有一个有效的Comodo Authenticode证书
  2. 证书已安装在我的本地证书存储中
  3. “签名”选项卡的项目属性显示,应使用证书对清单进行签名(我什至尚未尝试对.NET的程序集进行签名)
  4. 为comodo输入了正确的时间戳服务器URL
  5. 在“发布”选项卡上,设置非常典型:
  6. 发布到UNC路径
  7. 安装文件夹是映射到IIS中该路径的URL

但是,无论我做什么,当我使用“立即发布”按钮实际发布ClickOnce应用程序时,所有文件都会被发布,但是当我下载“ Setup.exe”时,它总是说“ Unknown Publisher”。

关于我在做什么错的任何想法吗?我已经对此进行了数周的研究,并且已经阅读了足够的内容,以至于我在“正确”地进行了操作,但是我只是必须缺少一些小的复选框或设置,或者是某些东西。

任何帮助表示赞赏。

-工作组

.net clickonce manifest authenticode

4
推荐指数
1
解决办法
3032
查看次数

C#:如何检测authenticode签名文件的篡改

我正在尝试编写一个C#程序来验证exe的数字签名.exe是用authenticode证书签名的,我想检测篡改.

我已经能够创建一个SignedCms实例,如下所述:从.NET中的Authenticode签名文件中获取时间戳

我假设SignedCms.CheckSignature可以做到这一点,但是这个方法永远不会引发异常......即使不是当我修改exe的某些部分时......

.net c# authenticode signtool

3
推荐指数
1
解决办法
3909
查看次数

如何使用insignia.exe对wix包进行编码

我创建了一个wix包,它在协同编码之前正常工作.在谷歌搜索和检查wix文档后,我知道我需要使用insignia.exe来代码签署wix包.请知道如何使用此工具.谢谢预期.

wix authenticode wix3.6

3
推荐指数
1
解决办法
3279
查看次数