Ошибка: издатель установочного пакета Authenticode в модуле PowerShell - PullRequest
0 голосов
/ 09 октября 2019

Мы создали репозиторий пакетов TFS для размещения собственных модулей PS 5.1. Перед публикацией мы подписываем эти модули POSH с помощью сертификата подписи кода GoDaddy. Все работало нормально до того утра, когда мы начинаем получать ниже упомянутую ошибку на

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

Я уверен, что ничего не изменилось со стороны разработки приложения или сертификата.

Этоошибка, которую мы получаем:

PackageManagement \ Install-Package: издатель Authenticode 'System.Object []' нового модуля DeploymentHelpers с версией '0.2.0' не совпадает с authenticodeэмитент '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. Power .... InstallPackage: InstallPackage) [Install-Package], Exception + FullyQualifiedErrorId: AuthenticodeIssuerMismatch, Validate-ModuleAuthenticodeSignature, Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

* 101 R2 в Windowsи TFS 2017.1

Кроме того, вот подробности репозитория CI:

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

Есть мысли?

1 Ответ

0 голосов
/ 11 октября 2019

Издатель Authenticode 'System.Object []' нового модуля 'DeploymentHelpers' с версией '0.2.0' не соответствует издателю аутентификатора 'System.Object []' ранее установленного модуля 'DeploymentHelpers 'с версией' 0.2.0 '.

Это известная проблема, существующая в PowerShellGet v1.0.0.1. Вы можете следовать по пути к файлу, чтобы проверить исходный скрипт проверки: C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1.

Во-первых, пожалуйста, обратите внимание на функцию Get-AuthenticodePublisher. Это первая функция, которая использовалась для получения и проверки SignerCertificate модуля. Вы можете проанализировать его сценарий. Выразите эту логику в одном предложении: она идет вверх по цепочке сертификатов . Это означает, что теперь вы были обработаны «тем же» издателем PowerShellGet, потому что сертификат подписи, который вы предоставили, совпадает с сертификатом в цепочке сертификата, который проверяется.

Теперь есть 3 решения, к которым вы можете обратиться.

  • Первый - добавить параметр, показанный в сообщении об ошибке: -SkipPublisherCheck. С помощью этого параметра он может предварительно игнорировать этап проверки сертификата. Таким образом, ошибка исчезнет.
  • Второе решение - изменить файл PSModule.psm1, добавив скрипт Select-Object -First 1 в функцию Get-AuthenticodePublisher. Как я уже упоминал ранее, угощение вызвано такими же сертификатами. Теперь с помощью Select-Object можно просто подобрать первый.
  • Последнее решение заключается в том, что вам лучше обновить версию PowerShellGet до последней , поскольку эта логическая проблема была устранена. исправлено с PowerShellGet v2.1.4: Проверка издателя модуля .

Примечание: если вы выбираете третий, вам необходимо обратить внимание на требования для последнихPowerShellGet версия:

enter image description here

...