Поделиться через


Управление границами доверия пакета

Подписанные пакеты не требуют установки каких-либо конкретных действий; Однако если содержимое было изменено после подписания, установка блокируется ошибкой NU3008.

Предупреждение

Пакеты, подписанные с ненадежными сертификатами, считаются неподписанными и устанавливаются без предупреждений или ошибок, таких как любой другой неподписанный пакет.

Настройка требований к подписи пакета

Замечание

Требуется NuGet 4.9.0+ и Visual Studio версии 15.9 и более поздних версий в Windows

Вы можете настроить, как клиенты NuGet проверяют подписи пакетов, установив значение require для signatureValidationMode в файле nuget.config с помощью команды nuget config.

nuget.exe config -set signatureValidationMode=require
  <config>
    <add key="signatureValidationMode" value="require" />
  </config>

В этом режиме убедитесь, что все пакеты подписаны любым из сертификатов, доверенных в nuget.config файле. Этот файл позволяет указать, какие авторы и (или) репозитории являются доверенными на основе отпечатка сертификата.

Автор пакета доверия

Чтобы доверять пакетам на основе подписи автора, используйте trusted-signers команду, чтобы задать author свойство в nuget.config.

nuget.exe  trusted-signers Add -Name MyCompanyCert -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 -FingerprintAlgorithm SHA256
<trustedSigners>
  <author name="MyCompanyCert">
    <certificate fingerprint="CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
  </author>
</trustedSigners>

Подсказка

nuget.exe Используйте команду проверки, чтобы получить SHA256 значение отпечатка сертификата.

Доверять всем пакетам из репозитория

Чтобы доверять пакетам на основе сигнатуры репозитория, используйте repository элемент:

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
  </repository>
</trustedSigners>

Владельцы пакетов доверия

Подписи репозитория включают дополнительные метаданные для определения владельцев пакета во время отправки. Пакеты можно ограничить из репозитория на основе списка владельцев:

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
      <owners>microsoft;nuget</owners>
  </repository>
</trustedSigners>

Если пакет содержит несколько владельцев, и любой из этих владельцев находится в списке доверия, установка пакета будет выполнена успешно.

Ненадежные корневые сертификаты

В некоторых случаях может возникнуть необходимость включить проверку с использованием сертификатов, не связанных с доверенным корневым сертификатом на локальном компьютере. Вы можете использовать атрибут allowUntrustedRoot для настройки этого поведения.

Синхронизация сертификатов репозитория

Репозитории пакетов должны объявлять сертификаты, используемые в индексе службы. В конечном итоге репозиторий обновит эти сертификаты, например, когда срок действия сертификата истекает. В этом случае клиентам с определенными политиками потребуется обновить конфигурацию, чтобы включить только что добавленный сертификат. Вы можете легко обновить доверенные подписи, связанные с репозиторием, с помощью nuget.exeкоманды синхронизации доверенных подписчиков.

Справочник схемы

Полный справочник по схеме для политик клиента можно найти в справочнике по nuget.config