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

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

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

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

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

Примечание.

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

Вы можете настроить способ проверки подписей пакетов в клиентах NuGet, задав для параметра signatureValidationMode значение require в файле 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