我有一个由InstallJammer构建的桌面应用程序。应用程序不是问题,但是当它安装在用户的计算机上时,用户计算机上的防病毒程序会停止我的应用程序创建的服务,因此它会停止与我的服务器通信。我需要将其列入白名单,以免它被视为对机器的风险并且反病毒不会阻止它。
到目前为止,我所知道的是
我的问题:
答案 0 :(得分:1)
在我实现了我想要的所有目标之后回答。
<强> TL;博士; 强>
直接阅读答案的人:
我有一个Windows安装程序(使用InstallJammer构建),可以在用户的计算机上创建Windows服务,该计算机经常被反病毒程序和防火墙列入黑名单。同样在浏览器中下载它会显示如下图所示的信息。
这是因为防病毒软件和防火墙无法识别您的代码(也就是说,它无法验证它是否来自可信赖的来源)。因此,它试图阻止下载或将服务列入黑名单(服务,因为我指的是我的应用程序),通过停止它或不允许它通过网络进行通信。
您需要通过代码签名证书验证您的代码(即通过数字签名获取您的代码)(从此处转发将被称为CSC)。这些证书由证书颁发机构提供(从此处转发将被称为CA)。
CA的一些示例是:赛门铁克(我使用的那个,因为我们有来自此CA的webapp的SSL证书),GlobalSign,DigiCert,Comodo等。)
This page显示来自不同CA的CSC定价列表。
这是一个有点乏味的过程,因为它有一定的标准和规则要遵守。获取证书的过程通常需要几天时间。例如,验证过程需要将许可证和一些公用事业账单的副本传真给证书颁发机构,以便合理证明我的身份。他们还验证了电话号码,可能需要与代表联系。(我对这个过程有点不确定,因为我的客户已经在美国完成了这个过程。)
您需要将证书另存为.p12文件,然后将其用于签署您的代码。
Microsoft SDK包含一个工具(signtool.exe),可用于对代码进行签名(通常位于C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86,具体取决于SDK的版本安装,&#39; 8.0&#39;可以在我们的机器上有所不同。
如果你是一个新手,并且要么没有达到你在签名文件的过程中需要自动化的时间(签名代码不明确)或者有很多文件要签名(最多3或4个)或者有很多要签名的文件,并且是一个有足够时间的疯狂的人,你可能想要使用DigiCert提供的this优秀的实用程序,它提供了一个非常好的UI(可能是讽刺)来签名并检查你的文件是否真的签。谢谢DigiCert人。
当然,最简单的过程是检查文件的属性是否包含数字签名选项卡。另一方面,微软有工具可以检查你的代码是否经过数字签名,可以通过简单的谷歌搜索找到它。
对于我构建的主要Windows可执行应用程序,它有很多二进制文件和可执行文件。所以我创建了一个批处理文件,用于执行以下签名和构建任务。 (我已经使用Microsoft的SignTool从命令行对文件进行签名)
<强> P.S。 :强> 代码签名后,您的软件成功列入白名单(通过防病毒软件和防火墙进行身份验证或验证)取决于您的证书的声誉。这种声誉是通过启发式方式确定的,良好的声誉意味着您的应用程序被阻止的可能性较小。
提示那些潜伏在那里的怪人 尝试购买时间最长的CSC订阅。这将帮助您避免证书翻转。
什么是证书翻转? 当旧证书过期并且您开始使用新的替换证书对代码进行签名时,会发生证书翻转;您在旧证书上获得的所有声誉都可能受到阻碍,因此您的新证书可能会有一段时间来获得良好的声誉。
因此,对于CSC过期且您希望避免意外的情况,您可能希望使用时间戳从一开始就对软件进行签名。谷歌搜索它(使用时间戳签名)将使你更聪明5英寸。
对于帮助我的人,博客和网站;更多详情可在Didier Stevens's blog找到。
还可以在MSDN blog上找到所有关于此以及所有Web开发人员的强大朋友Internet Explorer的智能过滤器的详细说明。