错误-安装包:在本地包存储库上运行Update-Module时,Authenticodeode颁发者'System.Object []'

时间:2018-11-12 19:41:05

标签: powershell nuget-package

我们已经为工作中的本地生产工具建立了一个Nuget样式软件包存储库。这是通过文件共享完成的。但是,我尝试更新的模块抛出了一个错误,该错误涉及旧版本的authenticode签名与新版本的发布者不匹配。

  1. 签名证书来自我们的AD PKI系统,并且是受信任的,它不会更改/不会以任何方式更改。

  2. 显然使用-SkipPublisherCheck是可行的解决方法,但这不是长期解决方案。

  3. 在首次安装软件包时,我没有收到任何错误或警告。仅在执行更新时。

  4. 在签名机上只有3个证书,所有三个证书都在LocalMachine存储中。他们没有相同的主题(这是我通过Google找到的某些网站上提到的可能原因)

代码

$cert = get-ChildItem Cert:\LocalMachine\My\5B3B66061B02EBF0986CF7969F36C6FB58060046
Set-AuthenticodeSignature "C:\Jenkins\workspace\Scripts - Master\MyModule_Src\dist\MyModule\MyModule.psm1" -Certificate $cert
#... Pester tests
Publish-Module -Name MyModule -Repository ORGPSGet -Verbose -force

错误消息

PackageManagement\Install-Package : Authenticode issuer 'System.Object[]' of the new module 'MyModule' with version
'4.0.4' is not matching with the authenticode issuer 'System.Object[]' of the previously-installed module 'MyModule'
with version '4.0.3'. If you still want to install or update, use -SkipPublisherCheck parameter.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:2089 char:20
+ ...           $sid = PackageManagement\Install-Package @PSBoundParameters
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exc
   eption
    + FullyQualifiedErrorId : AuthenticodeIssuerMismatch,Validate-ModuleAuthenticodeSignature,Microsoft.PowerShell.Packag
   eManagement.Cmdlets.InstallPackage

1 个答案:

答案 0 :(得分:0)

基于错误消息,我认为签名中有些东西是PowerShell期望多个证书而找不到它,或者签名中有多个证书,而PowerShell不喜欢这样。我在签名命令中添加了-IncludeChain signer,然后重新运行构建后,便可以按预期使用Update-Module命令。

Set-AuthenticodeSignature "C:\Jenkins\workspace\Scripts - Master\MyModule_Src\dist\MyModule\MyModule.psm1" -Certificate $cert -IncludeChain signer

有关更多详细信息,请参阅文档。

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-authenticodesignature?view=powershell-6