微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

空隙的.NET代码签名的应用程序不会安装/运行

我们最近更新了我们的应用程序,以便使用新证书进行SHA-256代码签名。 程序集是使用Visual Studio 2015中的Sign the assembly选项进行强名称签名的Sign the assembly Studio中的后期构build事件运行两个signtool.exe进程,以在SHA-256和旧版SHA-1证书中签名:

call "C:Program Files (x86)Windows Kits10binx86signtool.exe" sign /f "<mystrongName.pfx>" /p "<password>" /t <timestampuRL> "$(TargetPath)" call "C:Program Files (x86)Windows Kits10binx86signtool.exe" sign /f "<mystrongName.pfx>" /p "<password>" /fd sha256 /tr <timestampuRL> /td sha256 /as /v "$(TargetPath)"

最后,我们使用高级安装程序作为安装包装程序,并使用根据.exe签名的证书和时间戳在Digital Signature页面上进行代码签名。

最终的安装文件将安装并在Internet连接的Windows机器上运行,就像您期望的那样。 您可以通过安装时的setup.exe和运行时的属性看到证书已分配且有效,以及证书链。 此外,Windows会将应用程序从可信来源识别出来,并显示适当的已validation的发布者详细信息。

我们的客户群主要是全球100家公司,大部分的部署将发生在空隙networking中。 在这个环境中的第一次更新的部署中,证书无法validation,无法完成安装程序。

如何用命令行压缩指定的文件

有没有触摸()的.NET /窗口? 文件被locking时可以使用吗?

如何从Web服务器打印格式化的文本并确认打印成功?

DoD CAC身份validation – .NET C#的客户端证书问题,Windows Server 2008 R2,IIS 7.5

版本控制的生产环境

这是有道理的,因为Windows(2012 R2服务器)机器与Internet隔离,并且由于公司策略,已将Turn off Automatic Root Certificates设置为“已Enabled 。 此设置可以在MMC应用程序的Computer Configuration -> Administrative Templates -> System -> Internet Communication Management -> Internet Communication Settings文件夹中find(您需要安装证书插件)。

当在我们的本地testing平台上进行testing时,即使是没有连接到Internet的机器,如果上面的registry设置是认的( disabled ),也会从安装实用程序安装证书。 我们可以通过更改策略设置来匹配客户(已Enabled )来复制问题。

作为解决方法,我们手动下载了证书颁发机构根证书,并将其安装为受信任的根证书,安装将正常进行。

当我们向客户介绍此解决方法时,即使证书颁发机构根证书存在于机器的受信任根证书中,安装仍然失败。

证书颁发机构客户服务团队build议我们从签名过程中删除时间戳,以便安装进行 – 这是他们提供的唯一帮助(这是另一回事)。 但是,这意味着一旦代码签名证书过期,应用程序将停止运行,或者出现未经validation的发布者错误

我并不完全相信这可以解决问题,因为当我们在本地testing时,安装程​​序仍然find证书,并在手动安装证书颁发机构根证书时允许继续安装。

我无法做的是复制客户环境,以准确地重现问题(这没有帮助)。 这几乎就像Windows绕过本地计算机的受信任根证书存储一样。 我假设如果这是可能的,这将使Windows可以validation一个中央根证书存储。

这甚至可以在Windows中设置? 如果是这样,我会在哪里find这方面的文件或如何完成?

我是否在代码签名步骤中丢失了某些东西,或者我在理解安装机器上检查证书时应该发生什么?

为了让这个安装程序能够正常工作,我不知道该怎么做。 我不能做的是继续回顾客户,让他们继续testing我们的安装。 首先,它不是真正的debugging过程,因为供应商不是客户需要解决的问题,但更重要的是,我需要我们的团队了解是什么原因造成的,以及如何正确解决问题。

理想情况下,如果我不需要,我不会放弃时间戳,因为如果在证书过期之前软件没有升级,这将导致新的问题。

任何和所有的帮助非常感谢。

什么时候由.NET进程分配的内存被释放回Windows

机器在.NET中的域名?

c ++致命错误c1083项目之前很好,现在呢?

用C#中的Windows认编辑器打开一个图像

Windows客户端应用程序的login对话框

我认为证书无法在气密环境中验证的原因之一可能是撤销无法验证。 如您所知,证书可以被吊销,并且有两种不同的协议来检查它是否是CRL和OCSP。 两者都需要网络访问颁发证书的CA.

撤销是否被实际检查是由这里描述的政策,这可能会导致你的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐