Compartilhar via


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] e diag[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