Управление границами доверия пакета
Для установки подписанных пакетов не требуются какие-либо специальные действия. Но если содержимое было изменено с момента подписания, установка блокируется и выдается ошибка 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