Ошибка - Install-Package: издатель Authenticode 'System.Object []' при запуске модуля обновления в локальном хранилище пакетов - PullRequest
0 голосов
/ 12 ноября 2018

Мы создали репозиторий пакетов в стиле 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 голосов
/ 13 ноября 2018

Исходя из сообщения об ошибке, я предположил, что в сигнатуре было что-то, что 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

...