dotnet nuget sign
Эта статья относится к: ✔️ пакету SDK для .NET 6 и более поздних версий
Имя.
dotnet nuget sign
. Подписывает все пакеты NuGet, соответствующие первому аргументу, с помощью сертификата.
Краткие сведения
dotnet nuget sign [<package-path(s)>]
[--certificate-path <PATH>]
[--certificate-store-name <STORENAME>]
[--certificate-store-location <STORELOCATION>]
[--certificate-subject-name <SUBJECTNAME>]
[--certificate-fingerprint <FINGERPRINT>]
[--certificate-password <PASSWORD>]
[--hash-algorithm <HASHALGORITHM>]
[-o|--output <OUTPUT DIRECTORY>]
[--overwrite]
[--timestamp-hash-algorithm <HASHALGORITHM>]
[--timestamper <TIMESTAMPINGSERVER>]
[-v|--verbosity <LEVEL>]
dotnet nuget sign -h|--help
Description
Команда dotnet nuget sign
подписывает все пакеты, соответствующие первому аргументу, с помощью сертификата. Сертификат с закрытым ключом можно получить из файла или сертификата, установленного в хранилище сертификатов, указав имя субъекта или отпечаток SHA-1.
Примечание.
Для этой команды требуется корневое хранилище сертификатов, допустимое как для подписывания кода, так и метки времени. Кроме того, эта команда может не поддерживаться в некоторых сочетаниях операционной системы и пакета SDK для .NET. Дополнительные сведения см. в статье о проверке подписанного пакета NuGet.
Аргументы
package-path(s)
Указывает путь к файлу подписываемого пакета. Для подписания нескольких пакетов можно передать несколько аргументов.
Параметры
--certificate-path <PATH>
Указывает путь к файлу сертификата, который должен использоваться при подписании пакета.
Примечание.
В настоящее время этот параметр поддерживает только файлы
PKCS12 (PFX)
, содержащие закрытый ключ сертификата.--certificate-store-name <STORENAME>
Указывает имя хранилища сертификатов X.509, которое будет использоваться для поиска сертификата. По умолчанию имеет значение "My", хранилище сертификатов X.509 для личных сертификатов. Этот параметр следует использовать при указании сертификата с помощью параметров
--certificate-subject-name
или--certificate-fingerprint
.--certificate-store-location <STORELOCATION>
Указывает имя хранилища сертификатов X.509, которое будет использоваться для поиска сертификата. По умолчанию имеет значение "CurrentUser", хранилище сертификатов X.509, используемое текущим пользователем. Этот параметр следует использовать при указании сертификата с помощью параметров
--certificate-subject-name
или--certificate-fingerprint
.--certificate-subject-name <SUBJECTNAME>
Указывает имя субъекта сертификата, используемое для поиска сертификата в локальном хранилище сертификатов. Поиск — это сравнение строк без учета регистра с использованием предоставленного значения, которое находит все сертификаты с именем субъекта, содержащим эту строку, независимо от других значений субъекта. Хранилище сертификатов можно указать с помощью параметров
--certificate-store-name
и--certificate-store-location
.Примечание.
Сейчас этот параметр поддерживает только один соответствующий сертификат в результате. Если в результате отображается несколько сертификатов или ни одного, команда подписывания завершится ошибкой.
--certificate-fingerprint <FINGERPRINT>
Указывает отпечаток сертификата, используемый для поиска локального хранилища сертификатов для сертификата.
Начиная с .NET 9 этот параметр можно использовать для указания отпечатка пальца сертификата SHA-1, SHA-256, SHA-384 или SHA-512. Однако предупреждение возникает при использовании отпечатка сертификата SHA-1,
NU3043
так как он больше не считается безопасным.Все предыдущие версии пакета SDK для .NET продолжают принимать только отпечатки сертификатов SHA-1.
--certificate-password <PASSWORD>
Указывает пароль сертификата при необходимости. Если сертификат защищен паролем, но пароль не указан, команда подписания завершится ошибкой.
Примечание.
Команда
sign
поддерживает только неинтерактивный режим. Во время выполнения не будет запрашиваться пароль.--hash-algorithm <HASHALGORITHM>
Хэш-алгоритм, используемый для подписания пакета. По умолчанию используется значение SHA256. Возможные значения: SHA256, SHA384 и SHA512.
-o|--output
Указывает каталог, в котором должен быть сохранен подписанный пакет. Если этот параметр не указан, по умолчанию исходный пакет перезаписывается подписанным пакетом.
--overwrite
Указывает, что текущая сигнатура должна быть перезаписана. По умолчанию команда завершится ошибкой, если у пакета уже есть сигнатура.
--timestamp-hash-algorithm <HASHALGORITHM>
Хэш-алгоритм, используемый сервером меток времени RFC 3161. По умолчанию используется значение SHA256.
--timestamper <TIMESTAMPINGSERVER>
URL-адрес сервера меток времени RFC 3161.
-v|--verbosity <LEVEL>
Задает уровень детализации команды. Допустимые значения:
q[uiet]
,m[inimal]
,n[ormal]
,d[etailed]
иdiag[nostic]
. Значение по умолчанию —minimal
. Дополнительные сведения см. в разделе LoggerVerbosity.
-?|-h|--help
Выводит описание использования команды.
Примеры
Подписание foo.nupkg сертификатом cert.pfx (не защищено паролем):
dotnet nuget sign foo.nupkg --certificate-path cert.pfx
Подписание foo.nupkg сертификатом cert.pfx (защищено паролем):
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password
Подписание foo.nupkg сертификатом (защищенным паролем) соответствует указанному отпечатку SHA-1 в хранилище сертификатов по умолчанию (CurrentUser\My):
dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password
Подписание foo.nupkg сертификатом (защищенным паролем) соответствует указанному имени субъекта "Test certificate for testing signing" в хранилище сертификатов по умолчанию (CurrentUser\My):
dotnet nuget sign foo.nupkg --certificate-subject-name "Test certificate for testing signing" --certificate-password password
Подписание foo.nupkg сертификатом (защищенным паролем) соответствует указанному отпечатку SHA-1 в хранилище сертификатов CurrentUser\Root:
dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password --certificate-store-location CurrentUser --certificate-store-name Root
Подписание нескольких пакетов NuGet (foo.nupkg и все NUPKG-файлы в указанном каталоге) сертификатом cert.pfx (не защищенным паролем):
dotnet nuget sign foo.nupkg c:\mydir\*.nupkg --certificate-path cert.pfx
Подписание foo.nupkg сертификатом cert.pfx (защищенным паролем) и меткой времени с
http://timestamp.test
:dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password --timestamper http://timestamp.test
Подписание foo.nupkg сертификатом cert.pfx (не защищенным паролем) и сохранение подписанного пакета в указанном каталоге:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --output c:\signed\
Подписание foo.nupkg сертификатом cert.pfx (не защищенным паролем) и перезапись текущей сигнатуры, если пакет уже подписан:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --overwrite