gpt4 book ai didi

c# - 气隙 .NET 代码签名应用程序将无法安装/运行

转载 作者:可可西里 更新时间:2023-11-01 12:52:01 26 4
gpt4 key购买 nike

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

call "C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" 
sign /f "<mystrongName.pfx>" /p "<password>" /t
<timestampURL> "$(TargetPath)"

call "C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe"
sign /f "<mystrongName.pfx>" /p "<password>" /fd sha256 /tr
<timestampURL> /td sha256 /as /v "$(TargetPath)"

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

如您所料,最终的安装文件将安装并运行在连接 Internet 的 Windows 机器上。您可以在安装时通过 setup.exe 和运行时的属性看到证书已分配且有效,以及证书链。此外,Windows 会将应用程序识别为来自受信任的来源,并显示适当的经过验证的发布者详细信息。

我们的客户群主要是全局 100 家公司,大部分部署将在气隙网络中进行。在我们在此环境中的第一个更新部署中,无法验证证书阻止安装程序完成。

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

在我们的本地测试台上进行测试时,如果上述注册表设置是默认设置 ( Disabled ),即使未连接到 Internet 的机器也会从安装实用程序安装证书。我们可以通过更改策略设置以匹配客户的 ( Enabled ) 来复制该问题。

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

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

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

我也不完全相信这会解决问题,因为当我们在本地测试时,安装程​​序仍会找到证书,并允许在手动安装证书颁发机构根证书时继续安装。

我无法做的是复制客户环境以准确重现问题(这无济于事)。这几乎就像 Windows 绕过本地机器的受信任的根证书存储。我假设如果这是可能的,那么 Windows 可以针对中央根证书存储进行验证。

这甚至可以在 Windows 中设置吗?如果是这样,我在哪里可以找到关于此的文档或如何完成?

我是否在代码签名步骤或我对安装机器检查证书时应该发生的事情的理解中遗漏了什么?

我不知道该怎么做才能让这个安装程序正常工作。我不能做的是继续回到客户那里,让他们继续测试我们的安装。首先,这真的不是调试的正确过程,作为供应商,这不是客户需要解决的问题,但更重要的是,我需要我们的团队了解导致这种情况的原因以及如何正确补救。

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

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

最佳答案

我认为无法在气隙环境中验证证书的一个原因可能是无法验证吊销。您可能知道,证书可以被吊销,并且有两种不同的协议(protocol)可以检查它是否被吊销,CRL 和 OCSP。两者都需要对颁发证书的 CA 进行网络访问。

是否实际检查撤销由政策管理,如 here 所述,这可能会导致您的问题。

关于c# - 气隙 .NET 代码签名应用程序将无法安装/运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44122796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com