标签: signtool

如何从签名的C#exe中读取公钥

我正在签署一个dot net exe

signcode.exe with an spc/pvk combo
Run Code Online (Sandbox Code Playgroud)

该文件需要在运行时读取自己的公钥以验证某些数据.我走了很多不同的途径.

我试过了

X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe);
Run Code Online (Sandbox Code Playgroud)

executionCert则为null.我猜测signcode没有创建一个X509签名文件,但如果有一个改变的转换,我很高兴这样做.

编辑 结果以上工作....我向后检查了我的空检查(!=!= ==):)

Assembly asm = Assembly.GetExecutingAssembly();
string exe = asm.Location;
X509Certificate executingCert = X509Certificate.CreateFromSignedFile(exe); 

if (executingCert != null)
{
    Console.WriteLine("Assembly is signed");
    byte[] assemblyKey = executingCert.GetPublicKey();
}
Run Code Online (Sandbox Code Playgroud)

c# x509 signtool public-key

7
推荐指数
1
解决办法
3953
查看次数

成功运行signTool后发布者未知

我正在尝试创建测试证书并签署我创建的.MSI文件.在购买真正的安全证书之前,我需要让测试版与签名的.MSI一起使用.

我已执行以下步骤来签署我的.MSI文件.一切都成功完成,并显示一条消息,表明在最后一步之后成功签署了1个文件.

makecert.exe -sv c:\Test\mykey.pvk -n "CN=WTS" c:\Test\myCert.cer

cert2spc.exe c:\Test\mycert.cer c:\Test\mycert.spc

pvk2pfx -pvk c:\Test\mykey.pvk -pi password -spc c:\Test\mycert.spc -pfx c:\Test\mycert.pfx -po password

signTool sign /f c:\Test\mycert.pfx /p password /v c:\Test\test.msi
Run Code Online (Sandbox Code Playgroud)

执行这些步骤后,我运行.MSI文件(为.MSI修改的日期确实更改为与运行signTool步骤的时间相匹配).显示此.MSI来自未知发布者的警告消息仍显示为"发布者:未知".

我错过了一步还是什么?一切似乎都正常,我从来没有看到任何错误,但我的文件似乎没有签名.

windows installer install windows-installer signtool

7
推荐指数
1
解决办法
1万
查看次数

如何签署MSI?

我的公司希望阻止客户安装我们产品时出现的UAC弹出窗口.我们从VeriSign购买了证书(VeriSign Class 3 Code Signing 2010 CA),我收到了一份MyCompany.cer文件.

我通过双击并选择"个人"商店来安装证书.它现在出现在证书管理单元中,以及其他几个证书.snapin说其预期目的是"代码签名".我通过复制指纹获得了SHA1哈希.

我尝试使用此命令对msi进行签名:

signtool sign /sha1 <thumbprint> myInstaller.msi
Run Code Online (Sandbox Code Playgroud)

并收到一条消息"SignTool错误:未找到符合所有给定条件的证书."

如果我放弃"/ sha1",我会得到商店中大多数其他证书的清单 - 那些表示其预期用途是"<全部>"的证书未列出.

我究竟做错了什么?

code-signing certificate signtool

7
推荐指数
1
解决办法
8711
查看次数

如何使用Windows 8 RT的开发人员许可证手动签署exe文件

我为Windows 8 RT制作了一个exe文件.但是当我想运行时,显示一条错误消息:

"Windows cannot verify the digital signature for this file. ..."
Run Code Online (Sandbox Code Playgroud)

我获得了Windows 8 RT开发人员许可证.有了这个许可,visual studio 2012可以在我的表面远程部署和运行metro应用程序.

但我想使用signtool.exe手动签署我的exe文件:

signtool.exe sign -s CertStoreName -n "subject name" C:\mytest.exe
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道我的开发者许可证的"CertStoreName""主题名称".我怎样才能得到这些名字.

code-signing certificate signtool windows-8 visual-studio-2012

7
推荐指数
1
解决办法
1856
查看次数

Thawte 证书“无法验证签名中的证书”

我需要使用company.pfx 中存储的证书对Application.exe 文件进行签名。所以,我使用了signtool:

signtool.exe sign /p password /f company.pfx /t http://timestamp.verisign.com/scripts/timestamp.dll /v Application.exe

The following certificate was selected:
    Issued to: Company, Inc.
    Issued by: Thawte Code Signing CA - G2
    Expires:   Wed Aug 27 02:59:59 2014
    SHA1 hash: A2A0BD7C4516BF8C88AECC3A568CE9BB5D63902D

Done Adding Additional Store
Successfully signed and timestamped: App1_old.exe

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
Run Code Online (Sandbox Code Playgroud)

Signtool 说没有错误。但在数字签名详细信息中,有一条消息“无法验证签名中的证书”。并且没有认证路径。

在“详细信息”中,有一个属性“扩展错误信息”,表示“吊销状态:吊销功能无法检查吊销,因为吊销服务器已离线”。

应用程序.exe图像

为了调查这个问题,我在应用程序上使用了 sigcheck(-a key),它显示“已验证:无法为受信任的根颁发机构构建证书链。”

然后我将 pfx 文件导入存储库,看起来证书没问题。

证书图片

我在 stackoverflow 上搜索了有关我的主题的信息,找到了一些链接,它很有帮助。 …

openssl digital-signature signtool

7
推荐指数
1
解决办法
1万
查看次数

尝试使用signtool签名应用程序时,为什么会出现"指定的PFX密码不正确"?

我按照这个链接 签署了我的exe应用程序.

  • 我在Windows 7上安装了SDK工具,

  • C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin>makecert.exe -sv App-O.pvk -n "CN=MY DIGITAL KEY" App-O.cer

对话框打开以提供密码:

在此输入图像描述

我写了密码:'fess'

新窗口打开:

在此输入图像描述

我进来了:'fess'

#Succeeded

文件App-O.cer和App-O.pvk creaded.

现在我生成pfx:

pvk2pfx.exe -pvk App-O.pvk -spc App-O.cer -pfx App-O.pfx
Run Code Online (Sandbox Code Playgroud)

对话框打开以提供密码:

在此输入图像描述

我粘贴'fess'

文件pfx已创建.

现在我运行signtool:

 C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin>signtool.exe sign /f "App-O.pfx" /p fess "C:\Output\setup.exe"
Run Code Online (Sandbox Code Playgroud)

我在这里得到了错误:

SignTool Error: The specified PFX password is not correct.

Number of files successfully Signed: 0
Number of warnings: 0
Number of errors: 1
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

顺便说一句,我从Windows SDK的CMD shell得到的同样的错误.

谢谢,

pfx signtool

7
推荐指数
2
解决办法
1万
查看次数

如何使用证书双重签名?

我们需要使用SHA1和SHA2签署一个dll文件(在使用SHA1获得Win XP SP3签名证书之前,并使用SHA2的最高安全性发布Win XP SP3操作系统).我发现一篇文章说要做类似下面的事情,但我无法让它工作(在Win 8中显示2个证书).有关双重签名dll的含义示例,请查看Windows 8中.NET framework 4.0中的System.Data.dll证书,您将在属性窗口中看到SHA1和SHA2证书.

Signtool sign /fd sha256 /ph /as /sha1 XX...XX $(TargetPath)
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/windows/hardware/hh967734(v=vs.11).aspx

有谁知道如何做到这一点?谢谢!-J.P

sign certificate signtool

7
推荐指数
1
解决办法
2698
查看次数

Signtime对http://timestamp.geotrust.com/tsa不再可用吗?

我们在构建服务器上签署可执行文件.突然,构建服务器无法构建错误:

SingTool错误:无法访问sepcified时间戳服务器或返回无效响应.

将时间戳服务器更改为http://sha256timestamp.ws.symantec.com/sha256/timestamp后,唱歌再次起作用.

  1. 我们的旧网址有任何问题吗?为什么它不再可用?
  2. 我们可以在旧签名文件或新网址上遇到一些(安全)问题吗?

我知道这有点宽泛我只是不想错过任何东西......

installer sign signtool

7
推荐指数
1
解决办法
3839
查看次数

为什么 signtool.exe 在以管理员身份运行时只能找到证书?

我正在安装一台新的开发笔记本电脑,并安装了一个自行颁发的代码签名证书。我可以在我当前用户的个人证书下的 certmgr 中看到它。

当我尝试从 Visual Studio 2017 的开发人员命令提示符构建时,我得到:
error : SignTool Error: No certificates were found that met all the given criteria.

这在我的旧笔记本电脑上总是很好用。

我发现如果我在以管理员身份启动后从命令提示符运行相同的构建,signtool 会成功并且可以找到证书。

当我们安装新的笔记本电脑时,3/4 的同事发生了这种情况。一个人没问题,无需以管理员身份运行即可签名。在我们的旧笔记本电脑上,我们永远不必以管理员身份运行。

我试过用谷歌搜索找出可能是什么原因,因为我不知道以管理员身份运行与否应该对此产生任何影响。我还没有找到对这个问题的任何参考。

我们如何在不以管理员身份运行的情况下使用 signtool.exe?

当不以管理员身份运行时,它似乎在私钥过滤步骤中,我希望选择的证书被过滤掉:

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.12
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************

C:\>signtool sign /v /debug /ph  /i "<issuedby>"  /fd sha256 /td sha256 "C:\TestSign.dll"

The following certificates were considered:
    Issued to: Scott Langham
    Issued by: <issuedby>
    Expires:   Sun Sep 25 09:54:55 2022
    SHA1 …
Run Code Online (Sandbox Code Playgroud)

windows code-signing certificate code-signing-certificate signtool

7
推荐指数
1
解决办法
2193
查看次数

WinVerifyTrust 函数需要很长时间才能执行

我在Windows 10 Pro上使用 Windows WinVerifyTrust函数来验证 dll 签名。当我第一次激活此函数时,该函数需要4 秒才能执行并返回第一个 dll 的验证状态。对于其他正在进行的 dll,该函数返回速度很快。

谁能帮助我了解延迟的可能原因?

需要 4 秒的调用是这样的:

  lStatus = WinVerifyTrust(
        NULL,
        &WVTPolicyGUID,
        &WinTrustData);
Run Code Online (Sandbox Code Playgroud)

我正在使用的包装函数如下所示:

#define _UNICODE 1
#define UNICODE 1

#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <Softpub.h>
#include <wincrypt.h>
#include <wintrust.h>

// Link with the Wintrust.lib file.
#pragma comment (lib, "wintrust")

BOOL VerifyEmbeddedSignature(LPCWSTR pwszSourceFile)
{
    LONG lStatus;
    DWORD dwLastError;

    // Initialize the WINTRUST_FILE_INFO structure.

    WINTRUST_FILE_INFO FileData;
    memset(&FileData, 0, sizeof(FileData));
    FileData.cbStruct = sizeof(WINTRUST_FILE_INFO);
    FileData.pcwszFilePath = pwszSourceFile; …
Run Code Online (Sandbox Code Playgroud)

winverifytrust signtool

6
推荐指数
1
解决办法
2005
查看次数