繁体   English   中英

错误:PowerShell 模块中的安装包验证码颁发者

[英]Error: Install-Package Authenticode issuer in PowerShell module

我们已经建立了一个 TFS package 存储库,用于托管内部开发的 PS 5.1 模块。 在发布之前,我们使用 GoDaddy 代码签名证书对这些 POSH 模块进行签名。 直到今天早上我们开始出现以下提到的错误时,一切都运行良好

Install-Module -Name DeploymentHelpers -RequiredVersion 0.2.0 -Repository 'CI' -Force

我很肯定应用程序开发方面或证书方面没有任何改变。

这是我们得到的错误:

PackageManagement\Install-Package:新模块 'DeploymentHelpers' 版本为 '0.2.0' 的 Authenticode 颁发者 'System.Object[]' 与先前安装的模块'的验证码颁发者 'System.Object[]' 不匹配DeploymentHelpers',版本为 '0.2.0'。 如果您仍想安装或更新,请使用 -SkipPublisherCheck 参数。 在 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1772 char:21 +... $null = PackageManagement\Install-Package @PSBoundParameters + ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (Microsoft.电源....InstallPackage:InstallPackage) [Install-Package], Exception + FullyQualifiedErrorId: AuthenticodeIssuerMismatch,Validate-ModuleAuthenticodeSignature,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

我在 Windows 2012 R2 和 TFS 2017.1

此外,这里是 CI repo 的详细信息:

Register-PSRepository `
    -Name CI `
    -SourceLocation "http://tfs:8080/tfs/Projects/_packaging/CI/nuget/v2" `
    -PublishLocation 'http://tfs:8080/tfs/Projects/_packaging/CI/nuget/v2' `
    -PackageManagementProvider Nuget `
    -InstallationPolicy Trusted

有什么想法吗?

具有版本“0.2.0”的新模块“DeploymentHelpers”的验证码颁发者“System.Object[]”与先前安装的具有“0.2 版”的模块“DeploymentHelpers”的验证码颁发者“System.Object[]”不匹配.0'。

这是PowerShellGet v1.0.0.1中存在的一个已知问题。 您可以按照文件路径检查源验证脚本: C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1

首先,请关注 function Get-AuthenticodePublisher 这是第一个用于获取和验证模块的SignerCertificate的function。 你可以分析它的脚本。 用一句话表达这个逻辑就是沿着证书链走 这意味着,现在,您已被PowerShellGet视为“相同”发布者,因为您提供的签名证书与正在检查的证书链中的签名证书相同。

现在,有3个解决方案可以供您参考。

  • 第一个是添加错误消息中显示的参数: -SkipPublisherCheck 使用此参数,它可以主动忽略证书验证步骤。 因此,错误将消失。
  • 第二种解决方案是修改文件PSModule.psm1 ,将脚本Select-Object -First 1添加到 function Get-AuthenticodePublisher中。 正如我之前提到的,由相同证书引起的待遇。 现在,使用Select-Object可以只拾取第一个。
  • 最后一个解决方案是,您最好将PowerShellGet版本升级到最新版本,因为此逻辑问题已从PowerShellGet v2.1.4模块发布者验证

注意:如果选择第三种,需要注意最新的PowerShellGet版本要求

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM