如何为 Windows Forms 应用程序设置发布者名称

24

我创建了一个Windows Forms应用程序的设置。在Windows 7上安装此设置后,它会显示如下:

Name: my application.exe  
Publisher: unknown publisher  
Type: application  
From: my application.exe  

我想设置出版商的名称,如何设置?


安装完成后,我打开了该项目的 .exe 文件,然后显示了这个消息。 - user847455
1
用户正在谈论运行大多数安装程序和第三方可执行文件时看到的“您信任此应用程序吗”窗口。 - Hand-E-Food
1个回答

22
你需要对输出代码进行数字签名。我可以为您提供文章使用Authenticode进行代码签名和检查作为起点。
整个目的是保证您的代码没有被篡改。如果您从其中一个证书颁发机构购买代码签名证书,则可以完全避免出现“是否信任此代码”的窗口。
这不是一项简单的任务,但一旦设置好了,就可以通过脚本执行。您不会找到简单、快速的解决方案。
以下是最相关部分的剪切和粘贴。您可能需要进一步阅读以获取所需内容。

MakeCert

使用MakeCert测试程序生成一个测试X.509证书。MakeCert执行以下任务:

  1. 为数字签名创建一个公钥/私钥对,并将其与您选择的名称关联。
  2. 将密钥对与您选择的发布者名称相关联。
  3. 创建一个由测试根密钥或您指定的密钥签名的X.509证书,将您的名称绑定到密钥对的公共部分。该证书输出到文件、系统证书存储或两者兼有。

MakeCert Internet Explorer 3.02 UPD 示例

以下是使用Microsoft Internet Explorer 3.02 UPD选项创建证书的示例:

MakeCert -k:c:\KeyStore\MyKey.pvk -n:CN=MySoftwareCompany Cert.cer

在这个例子中,创建了一个名为Cert.cer的证书文件。密钥对的公共部分称为MyKey,绑定到发布者MySoftwareCompany

Cert2SPC

生成证书后,可以使用Cert2SPC程序创建软件发布证书。该程序将多个X.509证书封装到一个PKCS #7签名数据对象中。请注意,此程序仅用于测试目的。有效的软件发布证书是从证书颁发机构获得的。 以下是一个示例:

Cert2SPC MyCert.cer MyCert.spc

这将一个名为MyCert.cerX.509证书包装成一个名为MyCert.spcPKCS #7软件发布证书

SignCode

最后一步是使用SignCode程序实际签署文件。该程序将:

  1. 创建文件的加密摘要
  2. 使用您的私钥对摘要进行签名。
  3. 软件发布证书中的X.509证书复制到新的PKCS#7签名数据对象中。 PKCS#7对象包含用于创建签名的证书的序列号和发行者、证书以及已签名的摘要信息。
  4. 将对象嵌入文件中。
  5. 可选地,它可以向文件添加时间戳。签署文件时应始终添加时间戳。但是,SignCode还具有向先前签署的文件添加时间戳的能力,但受到某些限制(请参见选项表后面的示例)。
一旦文件被签名并且有时间戳(假设你有一个有效证书),该文件可以分发给你的客户。请注意,使用MakeCert和Cert2SPC测试程序生成的证书不适用于签署将分发给公众的代码。独立软件供应商必须从GTE、VeriSign Inc.或其他认证机构获得证书,以签署将分发给公众的代码。
在此处是如何使用Microsoft Internet Explorer 3.02 UPD选项对文件进行签名和时间戳的两个示例。第一个示例使用私钥名称“ MyKey”,而第二个示例使用私钥文件“ My.pvk”:
SignCode -prog MyControl.exe -spc Cert.spc -pvk MyKey -timeStamper http://timestamp.verisign.com/scripts/timstamp.dll
SignCode -prog MyControl.exe -spc Cert.spc -pvk My.pvk -timeStamper http://timestamp.verisign.com/scripts/timstamp.dll

注意:上面的URL中,timstamp.dll是正确的。这不是一个排版错误。
在这两种情况下,PKCS#7对象Cert.spc被嵌入到文件MyControl.exe的摘要中。在第一个示例中,摘要使用MyKey密钥对的私钥进行签名,并添加了时间戳。在第二个示例中,摘要使用私钥文件My.pvk进行签名,并添加了时间戳。

1
引用上述文本:“请注意,使用测试程序MakeCert和Cert2SPC生成的证书不适用于签署将分发给公众的代码。独立软件供应商必须从GTE、VeriSign Inc.或其他_认证机构_获取证书,以签署将分发给公众的代码。” - Hand-E-Food
1
那么这个证书有什么用途呢? - user847455
2
您可以在组织内部使用它来确保内容的安全性。如果您在每台计算机上安装它,Windows 将信任使用该证书签名的所有代码、文档和电子邮件。它还将识别欺诈项目,因为它们不会被签名。 - Hand-E-Food
1
假设你的公司名字是“My Company Pty. Ltd.”,你在电脑上创建了一个证书来证明这一点。你签署了安装程序并将其放在网上供所有人使用。你的安装程序显示它是由“My Company Pty. Ltd.”制作的。有人下载了它,他们插入了病毒。他们为“My Company Pty. Ltd.”创建了另一个证书并签署了安装程序。他们将其放在另一个网站上。当任何人下载任何一个安装程序时,都会显示它是由“My Company Pty. Ltd.”制作的。他们如何知道哪个带有病毒?这就是为什么你必须从可信任的机构购买证书的原因。 - Hand-E-Food
你能告诉我购买证书的可信机构吗? - user847455
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接