Compartir vía


signo de dotnet nuget

Este artículo se aplica a: ✔️ SDK de .NET 6 y versiones posteriores

Name

dotnet nuget sign: firma todos los paquetes NuGet en los que el primer argumento coincide con un certificado.

Sinopsis

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

Descripción

El comando dotnet nuget sign firma todos los paquetes en los que el primer argumento coincide con un certificado. El certificado con la clave privada se puede obtener de un archivo o de un certificado instalado en un almacén de certificados si se proporcionan un nombre de sujeto o una huella digital SHA-1.

Nota

Este comando requiere un almacén raíz de certificado válido para la firma de código y la marca de tiempo. Además, es posible que este comando no se admita en algunas combinaciones del sistema operativo y el SDK de .NET. Para obtener más información, consulte Comprobación del paquete firmado de NuGet.

Argumentos

  • package-path(s)

    Especifica la ruta de acceso al paquete que se va a firmar. Se pueden pasar varios argumentos para firmar varios paquetes.

Opciones

  • --certificate-path <PATH>

    Especifica la ruta del archivo al certificado que se utilizará al firmar el paquete.

    Nota

    Actualmente, esta opción solo admite archivos PKCS12 (PFX) que contengan la clave privada del certificado.

  • --certificate-store-name <STORENAME>

    Especifica el nombre del almacén de certificados X.509 que se usará para buscar el certificado. El valor predeterminado es "My", el almacén de certificados X.509 para certificados personales. Esta opción se debe usar al especificar el certificado mediante las opciones --certificate-subject-name o --certificate-fingerprint.

  • --certificate-store-location <STORELOCATION>

    Especifica el nombre del almacén de certificados X.509 que se usará para buscar el certificado. El valor predeterminado es "CurrentUser", el almacén de certificados X.509 que utiliza el usuario actual. Esta opción se debe usar al especificar el certificado mediante las opciones --certificate-subject-name o --certificate-fingerprint.

  • --certificate-subject-name <SUBJECTNAME>

    Especifica el nombre del firmante del certificado que se usa para buscar el certificado en un almacén de certificados local. La búsqueda es una comparación de cadenas sin distinción de mayúsculas y minúsculas mediante el valor proporcionado, que busca todos los certificados con el nombre del firmante que contiene esa cadena, con independencia de otros valores de firmante. El almacén de certificados se puede especificar mediante las opciones --certificate-store-name y --certificate-store-location.

    Nota

    Actualmente, esta opción solo admite la coincidencia de un único certificado en el resultado. Si en el resultado hay varios certificados que coinciden, o no hay ninguno, se producirá un error en el comando sign.

  • --certificate-fingerprint <FINGERPRINT>

    Especifica la huella digital del certificado usado para buscar un almacén de certificados local para el certificado.

    A partir de .NET 9, esta opción se puede usar para especificar la huella digital SHA-1, SHA-256, SHA-384 o SHA-512 del certificado. Sin embargo, se genera una NU3043 advertencia cuando se usa una huella digital de certificado SHA-1 porque ya no se considera segura. En .NET 10 y versiones posteriores, la advertencia se eleva a un error. Solo se admiten huellas digitales de la familia SHA-2 (SHA-256, SHA-384 y SHA-512).

    Todas las versiones de pre-.NET 9 del SDK de .NET siguen aceptando solo la huella digital del certificado SHA-1.

  • --certificate-password <PASSWORD>

    Especifica la contraseña del certificado, si es necesario. Si un certificado está protegido con contraseña pero no se proporciona ninguna, se producirá un error en el comando sign.

    Nota

    El comando sign solo admite el modo no interactivo. No habrá ninguna solicitud de contraseña en tiempo de ejecución.

  • --hash-algorithm <HASHALGORITHM>

    Algoritmo hash que se va a usar para firmar el paquete. El valor predeterminado es SHA256. Los valores posibles son SHA256, SHA384 y SHA512.

  • -o|--output

    Especifica el directorio donde se debe guardar el paquete firmado. Si no se especifica esta opción, de forma predeterminada el paquete firmado sobrescribe el paquete original.

  • --overwrite

    Indique que se debe sobrescribir la firma actual. De forma predeterminada, se producirá un error en el comando si el paquete ya tiene una firma.

  • --timestamp-hash-algorithm <HASHALGORITHM>

    Algoritmo hash que va a usar el servidor de asignación de marca de tiempo RFC 3161. El valor predeterminado es SHA256.

  • --timestamper <TIMESTAMPINGSERVER>

    Dirección URL a un servidor de asignación de marca de tiempo RFC 3161.

  • -v|--verbosity <LEVEL>

    Establece el nivel de detalle del comando. Los valores permitidos son q[uiet], m[inimal], n[ormal], d[etailed] y diag[nostic]. De manera predeterminada, es minimal. Para obtener más información, vea LoggerVerbosity.

  • -?|-h|--help

    Imprime una descripción de cómo usar el comando.

Ejemplos

  • Firme foo.nupkg con el certificado cert.pfx (sin protección con contraseña):

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx
    
  • Firme foo.nupkg con el certificado cert.pfx (con protección con contraseña):

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password
    
  • Sign foo.nupkg with certificate (password protected) matches with the specified SHA-256 fingerprint in the default certificate store (CurrentUser\My):

    dotnet nuget sign foo.nupkg --certificate-fingerprint B2C40F2F8775D7B7EBEB76BD5A9D3A4BC3F4B8A4D8D7C5F8A4C6B3E7A9E2D5F1 --certificate-password password
    
  • Firme foo.nupkg con el certificado (con protección con contraseña) que coincide con el nombre del firmante "Test certificate for testing signing" especificado en el almacén de certificados predeterminado (CurrentUser\My):

    dotnet nuget sign foo.nupkg --certificate-subject-name "Test certificate for testing signing" --certificate-password password
    
  • Sign foo.nupkg with certificate (password protected) matches with the specified SHA-256 fingerprint in the certificate store CurrentUser\Root:

    dotnet nuget sign foo.nupkg --certificate-fingerprint B2C40F2F8775D7B7EBEB76BD5A9D3A4BC3F4B8A4D8D7C5F8A4C6B3E7A9E2D5F1 --certificate-password password --certificate-store-location CurrentUser --certificate-store-name Root
    
  • Firme varios paquetes NuGet: foo.nupkg y todos los archivos .nupkg del directorio especificado con el certificado cert.pfx (sin protección con contraseña):

    dotnet nuget sign foo.nupkg c:\mydir\*.nupkg --certificate-path cert.pfx
    
  • Firme foo.nupkg con el certificado cert.pfx (con protección con contraseña) y la marca de tiempo http://timestamp.test:

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password --timestamper http://timestamp.test
    
  • Firme foo.nupkg con el certificado cert.pfx (sin protección con contraseña) y guarde el paquete firmado en el directorio especificado:

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx --output c:\signed\
    
  • Firme foo.nupkg con el certificado cert.pfx (sin protección con contraseña) y sobrescriba la firma actual si el paquete ya está firmado:

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx --overwrite