dotnet nuget sign
Este artigo se aplica a: ✔️ SDK do .NET 6 e versões posteriores
Nome
dotnet nuget sign
– Assina todos os pacotes NuGet correspondentes ao primeiro argumento com um certificado.
Sinopse
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
Descrição
O comando dotnet nuget sign
assina todos os pacotes correspondentes ao primeiro argumento com um certificado. O certificado com a chave privada pode ser obtido de um arquivo ou de um certificado instalado em um repositório de certificados fornecendo um nome de assunto ou uma impressão digital SHA-1.
Observação
Esse comando requer um repositório raiz de certificado válido para assinatura de código e carimbo de data/hora. Além disso, esse comando pode não ter suporte em algumas combinações de sistema operacional e do SDK do .NET. Para obter mais informações, consulte Verificação de pacote assinado pelo NuGet.
Argumentos
package-path(s)
Especifica o caminho do arquivo para o pacote a ser assinado. Vários argumentos podem ser passados para assinar vários pacotes.
Opções
--certificate-path <PATH>
Especifica o caminho do arquivo para o certificado a ser usado na assinatura do pacote.
Observação
Atualmente, essa opção dá suporte apenas a arquivos
PKCS12 (PFX)
que contêm a chave privada do certificado.--certificate-store-name <STORENAME>
Especifica o nome do repositório de certificados X.509 a ser usado para pesquisar o certificado. O padrão é "My", o repositório de certificados X.509 para certificados pessoais. Essa opção deve ser usada ao especificar o certificado por meio das opções
--certificate-subject-name
ou--certificate-fingerprint
.--certificate-store-location <STORELOCATION>
Especifica o nome do repositório de certificados X.509 a ser usado para pesquisar o certificado. O padrão é "CurrentUser", o repositório de certificados X.509 usado pelo usuário atual. Essa opção deve ser usada ao especificar o certificado por meio das opções
--certificate-subject-name
ou--certificate-fingerprint
.--certificate-subject-name <SUBJECTNAME>
Especifica o nome da entidade do certificado usado para pesquisar o certificado em um repositório de certificados local. A pesquisa é uma comparação de cadeia de caracteres que não diferencia maiúsculas de minúsculas usando o valor fornecido, que localiza todos os certificados com o nome da entidade que contém essa cadeia, independentemente de outros valores da entidade. O repositório de certificados pode ser especificado pelas opções
--certificate-store-name
e--certificate-store-location
.Observação
Atualmente, essa opção dá suporte a apenas um único certificado correspondente no resultado. Se houver vários certificados correspondentes no resultado ou nenhum certificado correspondente no resultado, o comando sign falhará.
--certificate-fingerprint <FINGERPRINT>
Especifica a impressão digital do certificado usado para pesquisar o certificado em um repositório de certificados local.
A partir do .NET 9, essa opção pode ser usada para especificar a impressão digital SHA-1, SHA-256, SHA-384 ou SHA-512 do certificado. No entanto, um aviso
NU3043
é gerado quando uma impressão digital de certificado SHA-1 é usada, pois não é mais considerada segura.Todas as versões anteriores do SDK do .NET continuam aceitando apenas a impressão digital do certificado SHA-1.
--certificate-password <PASSWORD>
Especifica a senha do certificado, se necessário. Se um certificado for protegido por senha, mas nenhuma senha for fornecida, o comando sign falhará.
Observação
O comando
sign
só dá suporte ao modo não interativo. Não haverá nenhum prompt para uma senha em tempo de execução.--hash-algorithm <HASHALGORITHM>
Algoritmo de hash a ser usado para assinar o pacote. Usa como padrão SHA256. Os valores possíveis são SHA256, SHA384 e SHA512.
-o|--output
Especifica o diretório em que o pacote assinado deve ser salvo. Se essa opção não for especificada, por padrão, o pacote original será substituído pelo pacote assinado.
--overwrite
Indique que a assinatura atual deve ser substituída. Por padrão, o comando falhará se o pacote já tiver uma assinatura.
--timestamp-hash-algorithm <HASHALGORITHM>
Algoritmo de hash a ser usado pelo servidor de carimbo de data/hora RFC 3161. Usa como padrão SHA256.
--timestamper <TIMESTAMPINGSERVER>
URL para um servidor de aplicação de carimbo de data/hora RFC 3161.
-v|--verbosity <LEVEL>
Define o nível de detalhes do comando. Os valores permitidos são
q[uiet]
,m[inimal]
,n[ormal]
,d[etailed]
ediag[nostic]
. O padrão éminimal
. Para obter mais informações, consulte LoggerVerbosity.
-?|-h|--help
Imprime uma descrição de como usar o comando.
Exemplos
Assine foo.nupkg com certificado cert.pfx (não protegido por senha):
dotnet nuget sign foo.nupkg --certificate-path cert.pfx
Assine foo.nupkg com certificado cert.pfx (protegido por senha):
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password
Assinar foo.nupkg com o certificado (protegido por senha) corresponde à impressão digital SHA-1 especificada no repositório de certificados padrão (CurrentUser\My):
dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password
Assinar foo.nupkg com o certificado (protegido por senha) corresponde ao nome do assunto especificado "Test certificate for testing signing" no repositório de certificados padrão (CurrentUser\My):
dotnet nuget sign foo.nupkg --certificate-subject-name "Test certificate for testing signing" --certificate-password password
Assinar foo.nupkg com o certificado (protegido por senha) corresponde à impressão digital SHA-1 especificada no repositório de certificados CurrentUser\Root:
dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password --certificate-store-location CurrentUser --certificate-store-name Root
Assinar vários pacotes NuGet – foo.nupkg e todos os arquivos .nupkg no diretório especificado com certificado cert.pfx (não protegido por senha):
dotnet nuget sign foo.nupkg c:\mydir\*.nupkg --certificate-path cert.pfx
Assinar foo.nupkg com certificado cert.pfx (protegido por senha) e carimbo de data/hora com
http://timestamp.test
:dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password --timestamper http://timestamp.test
Assinar foo.nupkg com certificado cert.pfx (protegido por senha) e salvar o pacote assinado no diretório especificado:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --output c:\signed\
Assinar foo.nupkg com certificado cert.pfx (protegido por senha) e substituir a assinatura atual se o pacote já estiver assinado:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --overwrite