包签名和数字证书

问题描述:

我创建了一个Windows窗体应用程序使用c#的应用程序的输出是.exe,在这个项目的引用中,我添加了许多dll的引用,这个项目需要所有这些引用都是创建的但是这些引用的dll,其中一些正在使用第三个Dll。包签名和数字证书

我使用wix Toolset在安装程序项目中打包了.exe和所有引用的dll。

请注意,.exe和安装程序没有强名称,也没有使用密钥签名。

我把这个.msi结果文件上传到内联网服务器,但是当用户通过谷歌浏览器从内联网下载它时,它会给出如图1所示的警告信息。 Chrome warning

当用户双击下载后的.msi文件启动安装过程时,会激活windows智能屏幕。 Smart screen warning

,并在运行安装程序会显示黄色的横幅用户帐户控制提示,如图三。[Windows智能屏幕警告] [3]

我做了很多invistigations的,我不得不发现,这是因为我的代码没有用数字证书进行数字签名,实际上我没有这方面的经验,我不知道这是真正的原因还是什么。

我是否需要通过从.net的签名选项卡签署程序集来强制签署.exe,我也没有关于演唱可执行程序包的经验。

所有我需要的是,我不希望用户觉得他正在下载并运行不受信任的东西。

如果原因是包需要数字证书,我是否需要用强名称来装配程序集才能用数字证书对其进行签名?

Windows将经过验证的发布者发布的所有应用程序视为不可信的应用程序。如果你想让你的应用程序信任你的应用程序数字签名。

  1. 首先购买代码签名证书。可以从Godaddy说最便宜的(https://in.godaddy.com/web-security/code-signing-certificate)。购买证书后,只需按照godaddy上的程序获取您的证书(.pfx)文件即可。
  2. 安装Visual Studio表达
  3. 安装的InstallShield生成.exe文件
  4. 您可以通过使用InstallShield轻松地注册与证书的输出。详情请参阅截图。 enter image description here
+0

非常感谢您的快速回放和答案,我只需要问几个问题。关于你的观点[Install InstallShield for .exe]为什么我必须安装shhiled,什么是.exe我应该生成?我以为我应该购买证书,然后用它来签署my.msi软件包,使用microsoft SDK中存在的signtool.exe。 2 - 我可以使用Visual Studio创建一个测试证书,并使用它来使用signtool.exe签署我的.msi文件.3 - 如果我购买了证书并使用它作为你建议签署我的.msi软件包,它将如何在用户机器上信任? – Laila

+0

您可以继续使用TestCertificate并使用Signtool.exe签署.msi。首先生成TestCertificate并安装在您用来签署.exe或.msi的机器中。之后,尝试运行应用程序,你会看到发行商的名字。TestCertificate只适用于您的机器。如果您购买证书,请在您用于签署.exe或.msi的计算机上安装该证书。他们试图在任何机器上运行,你会看到出版商的名字。 – null1941

+0

Installshield是SoftwareTool,用于创建具有代码签名等功能的安装程序。使用这个软件签名应用程序非常简单(使用Signtool.exe进行内部签名)。 :) – null1941