簡體   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