Подписыв пакет NuGet
Подписанный пакет позволяет выполнять проверку целостности содержимого проверка, которая обеспечивает защиту от изменения содержимого. Подпись пакетов также предоставляет истинные сведения о фактическом источнике пакета и подтверждает его подлинность для клиента. В этом руководстве предполагается, что вы уже создали пакет.
Получение сертификата для подписи кода
Допустимые сертификаты можно получить из общедоступного центра сертификации, например:
Полный список доверенных центров сертификации Windows также можно получить из http://aka.ms/trustcertpartners.
Для тестирования можно использовать самовыданные сертификаты. Однако NuGet.org не принимает пакеты, подписанные с помощью самостоятельно выданных сертификатов. Дополнительные сведения см. в разделе Создание тестового сертификата.
Экспорт файла сертификата
Вы можете экспортировать существующий сертификат в двоичный формат DER, используя мастер экспорта сертификатов.
Вы можете также экспортировать сертификат с помощью команды Export-Certificate PowerShell.
Подписывание пакета
Подпишите пакет, выполнив команду dotnet nuget sign (требуется пакет SDK для .NET 6.0.100 или более поздней версии).
dotnet nuget sign MyPackage.nupkg --certificate-path <PathToTheCertificate> --timestamper <TimestampServiceURL>
or
Подпишите пакет, выполнив команду nuget sign (требуется файл nuget.exe 4.6.0 или более поздней версии):
nuget sign MyPackage.nupkg -CertificatePath <PathToTheCertificate> -Timestamper <TimestampServiceURL>
Совет
Поставщик сертификатов также часто предоставляет URL-адрес сервера меток времени, который можно указать в качестве значения необязательного аргумента Timestamper
выше. Чтобы получить URL-адрес этой службы, обратитесь к документации и (или) в службу поддержки своего поставщика.
- Вы можете использовать сертификат, доступный в хранилище сертификатов, или сертификат из файла. См. справочник по CLI для nuget sign.
- Подписанные пакеты должны включать метку времени, чтобы подпись оставалась действительной после истечения срока действия сертификата для подписывания. В противном случае операция sign вызовет предупреждение.
- Просмотреть сведения о подписи заданного пакета можно с помощью nuget verify.
Регистрация сертификата на сайте NuGet.org
Чтобы опубликовать подписанный пакет, сначала нужно зарегистрировать сертификат на сайте NuGet.org. Вам потребуется сертификат в виде файла .cer
в двоичном формате DER.
- Войдите на сайт NuGet.org.
- Перейдите в
Account settings
(илиManage Organization
>Edit Organization
, если вы хотите зарегистрировать сертификат в учетной записи организации). - Разверните раздел
Certificates
и выберитеRegister new
. - Найдите и выберите файл сертификата, экспортированного ранее.
Примечание.
- Один пользователь может отправить несколько сертификатов. Один и тот же сертификат может быть зарегистрирован несколькими пользователями.
- После регистрации сертификата все будущие отправки пакетов должны быть подписаны с помощью одного из сертификатов. См. раздел Управление требованиями к подписи для вашего пакета на сайте NuGet.org
- Пользователи могут также удалить зарегистрированный сертификат из учетной записи. После удаления сертификата новые пакеты, подписанные с его помощью, вызовут сбой при отправке. Существующие пакеты не будут затронуты.
Публикация пакета
Теперь вы готовы опубликовать пакет в NuGet.org. См. статью "Публикация пакетов".
Создание тестового сертификата
Для тестирования можно использовать самовыданные сертификаты. Чтобы создать самовыданный сертификат, используйте команду New-SelfSignedCertificate PowerShell.
New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" `
-FriendlyName "NuGetTestDeveloper" `
-Type CodeSigning `
-KeyUsage DigitalSignature `
-KeyLength 2048 `
-KeyAlgorithm RSA `
-HashAlgorithm SHA256 `
-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
-CertStoreLocation "Cert:\CurrentUser\My"
Эта команда создает тестовый сертификат, доступный в личном хранилище сертификатов текущего пользователя. Вы можете открыть хранилище сертификатов, запустив certmgr.msc
, чтобы просмотреть созданный сертификат.
Предупреждение
NuGet.org не принимает пакеты, подписанные с помощью самовыданных сертификатов.
Управление требованиями к подписи для пакета на сайте NuGet.org
Войдите на сайт NuGet.org.
Перейдите по адресу
Manage Packages
.
Если вы являетесь единственным владельцем пакета, вы являетесь обязательным подписчиком, то есть вы можете использовать любой из зарегистрированных сертификатов для подписывания и публикации пакетов в NuGet.org.
Если у пакета несколько владельцев, по умолчанию для подписания можно использовать любые сертификаты владельца. Как совладелец пакета, вы можете указать себя или совладельца вместо значения "Любой". Если вы сделаете владельцем пользователя, у которого нет зарегистрированного сертификата, неподписанные пакеты будут запрещены.
Аналогично если по умолчанию для пакета, в котором у одного владельца зарегистрирован сертификат, а у другого — не зарегистрирован, выбран параметр "Любой", то в этом случае NuGet.org принимает подписанный пакет с подписью, зарегистрированной одним из владельцев, или неподписанный пакет (так как у одного из владельцев не зарегистрирован сертификат).
Связанные статьи
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по