签署Windows EXE档案

kiayqfof  于 2022-11-26  发布在  Windows
关注(0)|答案(9)|浏览(188)

我想签署一个EXE文件,这样Windows就不会警告最终用户某个应用程序来自“未知发行商”。我不是Windows开发人员。该应用程序是一个屏幕保护程序,由一个生成屏幕保护程序的应用程序生成。因此,我对该文件的生成方式没有影响。
我已经发现我需要一个CA(如Verisign或instantssl.com)的代码签名证书。我不明白的是我需要做什么(如果可能的话)来签名我的EXE文件。什么是一个简单的解释?
Mel绿色的回答让我更进一步,但是signtool希望我指定在任何情况下使用什么证书。我能以某种方式获得一个免费的代码签名证书来测试这是否对我有用吗?
另外请指定哪种证书是正确的。大多数网站只提到“代码签名”,并谈论签名的应用程序实际上是由用户编译的。这不是我的情况。

pkwftd7m

pkwftd7m1#

您可以尝试使用Microsoft's Sign Tool
您可以将它作为Windows SDK for Windows Server 2008和.NET 3.5的一部分下载。下载后,您可以从命令行使用它,如下所示:
签名工具签名/a MyFile.exe
这将使用可用的“最佳证书”对单个可执行文件进行签名。(如果您没有证书,它将显示SignTool错误消息。)
或者您可以尝试:
签名工具签名向导
这将启动一个向导,该向导将指导您完成对应用程序进行签名的过程。(此选项在Windows SDK 7.0之后不可用。)
如果您想获得一个证书,以便用来测试对可执行文件进行签名的过程,您可以使用.NET工具 Makecert
Certificate Creation Tool (Makecert.exe)
创建自己的证书并使用它对可执行文件进行签名后,您需要手动将其添加为计算机的受信任根CA,以便UAC告诉运行它的用户它来自受信任的来源。重要. * Installing a certificate as ROOT CA will endanger your users privacy. Look what happened with DELL. * 您可以在以下位置找到有关通过代码和Windows完成此操作的详细信息:

希望这能为任何试图这样做的人提供更多的信息!

5vf7fwbs

5vf7fwbs2#

我在工作中也遇到过同样的情况,以下是我们的发现
您必须做的第一件事是获取证书并将其安装在您的计算机上,您可以从证书颁发机构购买一个证书,也可以使用makecert生成一个证书。
以下是这两个选项的优缺点

购买证书
*优点

  • 使用CA(证书颁发机构)颁发的证书将确保Windows不会警告最终用户任何使用CA证书的计算机上存在来自“未知发行商”的应用程序(操作系统通常附带来自多个CA的根证书)
    *缺点:
  • 从CA获取证书需要一定的成本

有关价格,请参见https://cheapsslsecurity.com/sslproducts/codesigningcertificate.htmlhttps://www.digicert.com/code-signing/

使用Makecert生成证书
*优点:

  • 步骤很简单,您可以与最终用户共享证书
    *缺点:
  • 最终用户必须在其计算机上手动安装证书,根据您的客户端,这可能不是一个选项
  • 使用makecert生成的证书通常用于开发和测试,而不是用于生产
    签署可可执行

有两种方法可以签署您想要的档案:

  • 使用计算机上安装的证书

signtool.exe sign /a /s MY /sha1 sha1_thumbprint_value /t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\filename.dll"

  • 在此示例中,我们使用存储在Personal文件夹中的证书和SHA1指纹(此指纹来自证书)对位于C:\filename.dll的文件进行签名
  • 使用证书文件

signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"

  • 在本例中,我们使用证书c:\path\to\mycert.pfx和密码pfxpassword对文件c:\path\to\file.exe进行签名
    测试您的签名
  • 方法1:使用signtool

转到:* 开始〉运行 *
键入CMD〉单击 * 确定 *
在命令提示符下,输入signtool所在的目录
运行以下命令:
signtool.exe verify /pa /v "C:\filename.dll"

  • 方法2:使用Windows

右键单击签名文件
选择 * 属性 *
选择"数字签名“选项卡。签名将显示在"签名列表”部分。
我希望这能帮到你
资料来源:

a0x5cqrl

a0x5cqrl3#

如果你正在做开源开发,你可以得到一个代码签名证书from Certum。我已经使用他们的证书一年多了,它确实摆脱了来自Windows的未知发布者消息。价格历史:

  • 2005年-14欧元
  • 2019年-25欧元
  • 2022年-69.00欧元

至于签名代码,我使用的是脚本中的signtool.exe,如下所示:

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe
i86rm4rw

i86rm4rw4#

另一个选项是,如果你需要在Linux系统上对可执行文件进行签名,可以使用Mono project tools中的signcode

fivyi3re

fivyi3re5#

ASP的杂志ASPects有一个关于如何签署代码的详细描述(你必须是会员才能阅读文章),你可以通过http://www.asp-shareware.org/下载
这里有一个链接,说明你如何可以make your own test certificate
This也可能是有趣的。

pbpqsu0x

pbpqsu0x6#

这并不是对这个问题的直接回答,但它是密切相关的(我希望它是有用的),因为迟早任何一个程序员都会把手伸进钱包。
因此,EV(扩展验证)代码签名证书的价格(按价格排序):
AboutSSL
240美元/年(点击诱饵价格)
287美元/年(扣除优惠券后的真实的价格)
KSoftware.net
1年$350 +($50隐藏费用!)
2年600美元
3年750美元
OV:每年84美元(3年)
我从他们那里买了一辆EV。几年后我买了一辆OV。eToken是在U盘上发送的。不需要阅读器。他们只是中介。最后,你实际上是从科摩多购买的(Sectigo)Sectigo非常慢第二次,验证花了整整两个月的时间。电话验证多次失败。一切都很繁琐。技术支持没有“I don“我不知道发生了什么事,可能只是一个巴基斯坦人阅读剧本。
Sklep.certum.pl
1年379欧元
(似乎仅适用于波兰用户)

董事会成员

1年364欧元或307欧元(+19%增值税)
(OV 69+增值税)
Sectigo.com
1年499美元
3年897美元
GlobalSign.com
1年总计410美元
2年总计760美元
3年总计950美元
Digicert.com
1年:600美元(原来是104美元)
三年:?

赛门铁克网站

1年:700美元
3年:贵得离谱
更多价格请点击:
cheapsslsecurity.com CodeSigning EV
cheapsslsecurity.com SSL only!

EV与OV

使用EV,还需要九个额外的步骤,包括验证企业的公共电话号码、营业时间、注册号和管辖权,以及域名欺诈检查、联系人黑名单检查和电话,以验证请求者的就业状态。
Some建议向Microsoft提交一个用OV签名的程序,以便用他们的防病毒软件进行检查。
如果你发现更便宜的价格,让我知道,我会更新名单!

如何使用证书?

为了签署exe文件,我使用了MS signtool.exe。为此,你需要下载臃肿的MS Windows SDK,它有一个1GB的大空间。幸运的是,你不必安装它。只需打开ISO并解压“Windows SDK Signing Tools-x86_en-us.msi”。它只有400 KB。
然后我建立了这个小脚本文件:

prompt $
echo off
cls

copy "my.exe" "my.bak.exe"

"c:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign /fd SHA256 /f MyCertificate.pfx /p MyPassword My.exe

pause

__

签署EXE档后发生了什麽事?

于是,在投入了一些资金后,我终于签了我的EXE文件,之后发生了什么?什么都没有......在Win10上我仍然看到同样的“不受信任”窗口,上面有“不要运行”按钮,“继续”按钮仍然是看不见的,我的程序每天大约有400次下载,让我们拭目以待,看看到底需要下载多少次。

s8vozzvw

s8vozzvw7#

参考https://steward-fu.github.io/website/driver/wdm/self_sign.htm注:Microsoft SDK中的signtool.exe
1.第一次(制作私人凭证)
你的名字你的名字
certmgr.exe -添加您的姓名。cer -s -r本地计算机根目录
2.之后(将您的标志添加到您的应用程序)
sign /s您的姓名您的应用程序. exe

tktrz96b

tktrz96b8#

还有一个选择,如果你在Windows 10上开发,但没有安装微软的signtool.exe,你可以在Windows上使用Ubuntu上的Bash来签名你的应用。
https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/

t3psigkw

t3psigkw9#

使用以下链接对.exe(setup/ installer)文件进行签名(不使用Microsoft setup signtool对exe/setup文件进行签名)
https://ebourg.github.io/jsign/#files
示例命令java -jar jsign-2.0.jar --密钥库密钥库.jks”--别名别名--storepass密码MyInstaller.exe
为我工作:)

相关问题