Clickonce 应用程序已签名,但下载时发布者仍然未知
Clickonce app is signed but publisher is still unknown when downloading
我有一个有效的未过期的代码签名证书(标准的,不是 EV),我用它成功地签署了一次点击应用程序(.net 4.5)并发布到网络服务器以供下载。下载此应用程序时,它会正确显示发布者名称。问题是,在任何其他应用程序上安装代码签名证书后,它在下载时将发布者名称显示为“未知发布者”。我安装证书的方式没有任何区别,所有应用程序都发布到同一网络服务器。当我登录到 Web 服务器时打开 .exe 或清单文件时,它会正确显示发布者名称。检查“数字签名”文件属性表明它们是使用正确的 sha256 代码签名证书签名的。以下是我使用的步骤:
- 已安装代码签名证书以通过“签名”选项卡单击一次应用程序并已启用(Visual Studio 2017 Pro)。
- 代码签名算法是 sha256RSA,具有有效的时间戳服务器 (http://timestamp.comodoca.com/?td=sha256)。
- 应用程序集未签名后单击。
- 代码签名证书已安装在开发机器上(Windows 10 Pro 1809)。
- 代码签名证书已在“受信任的根证书颁发机构”和“中间证书颁发机构”(Windows 2012 R2 使用 IIS 8)的 Web 服务器上为“计算机帐户”安装。
附带说明一下,我使用 SHA1 从 Internet Explorer 导出代码签名证书,然后将其安装到 Web 服务器。有一个已知问题,即当证书导出为 SHA256 并尝试将其导入 Web 服务器时,文件的密码总是不正确。这发生在我身上,所以我只是将 SHA1 版本导入到 Web 服务器。不确定这是否会产生任何问题,但它适用于 one clickonce 应用程序。
更新: 如果我转到发布部署 URL 并单击“安装”按钮,我注意到一些奇怪的事情。在为具有“未知发布者”的 clickonce 应用程序下载 setup.exe 之后,我看到一个更可怕的智能屏幕过滤器,它说文件未签名,但在其下方显示了正确的发布者信息。检查 exe 的“数字签名”属性 表明它已正确签名。
我的问题是由于在 Visual Studio 中启用了“使用应用程序清单获取信任信息”选项时发布者名称与我的代码签名证书颁发给的人不匹配引起的。取消选中该选项或更正发布者名称即可解决该问题。这在下面进一步解释:
检查您的应用程序清单是否用于信任信息(即发布者名称)。如果是,请确保描述部分中的发布者名称与证书颁发给的人完全匹配。如果不匹配,您将遇到“未知发布者”问题。此设置位于“发布”选项卡的 Visual Studio 中。单击“选项...”按钮,然后单击“清单”列表项。
我会尝试取消选中“使用应用程序清单获取信任信息”,看看是否能解决问题。如果您确实需要选中“使用应用程序清单”选项,请单击“描述”选项卡并确保“发布者名称”值与代码签名证书颁发给的名称值完全匹配。
我遇到了同样的问题 - 有效的 EV 证书 - 下载时未知发布者 - 但安装很顺利,没有 Windows 智能屏幕。
将构建工具从 VS2017 更改为 VS2019 似乎已修复它 -> 高兴。
我有一个有效的未过期的代码签名证书(标准的,不是 EV),我用它成功地签署了一次点击应用程序(.net 4.5)并发布到网络服务器以供下载。下载此应用程序时,它会正确显示发布者名称。问题是,在任何其他应用程序上安装代码签名证书后,它在下载时将发布者名称显示为“未知发布者”。我安装证书的方式没有任何区别,所有应用程序都发布到同一网络服务器。当我登录到 Web 服务器时打开 .exe 或清单文件时,它会正确显示发布者名称。检查“数字签名”文件属性表明它们是使用正确的 sha256 代码签名证书签名的。以下是我使用的步骤:
- 已安装代码签名证书以通过“签名”选项卡单击一次应用程序并已启用(Visual Studio 2017 Pro)。
- 代码签名算法是 sha256RSA,具有有效的时间戳服务器 (http://timestamp.comodoca.com/?td=sha256)。
- 应用程序集未签名后单击。
- 代码签名证书已安装在开发机器上(Windows 10 Pro 1809)。
- 代码签名证书已在“受信任的根证书颁发机构”和“中间证书颁发机构”(Windows 2012 R2 使用 IIS 8)的 Web 服务器上为“计算机帐户”安装。
附带说明一下,我使用 SHA1 从 Internet Explorer 导出代码签名证书,然后将其安装到 Web 服务器。有一个已知问题,即当证书导出为 SHA256 并尝试将其导入 Web 服务器时,文件的密码总是不正确。这发生在我身上,所以我只是将 SHA1 版本导入到 Web 服务器。不确定这是否会产生任何问题,但它适用于 one clickonce 应用程序。
更新: 如果我转到发布部署 URL 并单击“安装”按钮,我注意到一些奇怪的事情。在为具有“未知发布者”的 clickonce 应用程序下载 setup.exe 之后,我看到一个更可怕的智能屏幕过滤器,它说文件未签名,但在其下方显示了正确的发布者信息。检查 exe 的“数字签名”属性 表明它已正确签名。
我的问题是由于在 Visual Studio 中启用了“使用应用程序清单获取信任信息”选项时发布者名称与我的代码签名证书颁发给的人不匹配引起的。取消选中该选项或更正发布者名称即可解决该问题。这在下面进一步解释:
检查您的应用程序清单是否用于信任信息(即发布者名称)。如果是,请确保描述部分中的发布者名称与证书颁发给的人完全匹配。如果不匹配,您将遇到“未知发布者”问题。此设置位于“发布”选项卡的 Visual Studio 中。单击“选项...”按钮,然后单击“清单”列表项。
我会尝试取消选中“使用应用程序清单获取信任信息”,看看是否能解决问题。如果您确实需要选中“使用应用程序清单”选项,请单击“描述”选项卡并确保“发布者名称”值与代码签名证书颁发给的名称值完全匹配。
我遇到了同样的问题 - 有效的 EV 证书 - 下载时未知发布者 - 但安装很顺利,没有 Windows 智能屏幕。
将构建工具从 VS2017 更改为 VS2019 似乎已修复它 -> 高兴。