dotnet nuget sign

この記事の対象: ✔️ .NET 6 SDK 以降のバージョン

名前

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

説明

dotnet nuget sign コマンドでは、最初の引数に一致するすべてのパッケージに証明書で署名します。 秘密キーを含む証明書は、ファイルから、または証明書ストアにインストールされている証明書から取得できます。その場合、サブジェクト名または SHA-1 フィンガープリントを指定します。

メモ

このコマンドには、コード署名とタイムスタンプの両方で有効な証明書ルート ストアが必要です。 また、オペレーティング システムと .NET SDK の組み合わせによっては、このコマンドがサポートされない場合があります。 詳細については、「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 オプションで指定できます。

    メモ

    このオプションでは現在、結果の 1 つの一致する証明書のみがサポートされます。 結果に一致する証明書が複数ある場合、または結果に一致する証明書がない場合、sign コマンドは失敗します。

  • --certificate-fingerprint <FINGERPRINT>

    ローカル証明書ストアで証明書を検索するために使用する証明書のフィンガープリントを指定します。

    .NET 9 以降では、このオプションを使用して、証明書の SHA-1、SHA-256、SHA-384、または SHA-512 フィンガープリントを指定できます。 ただし、SHA-1 証明書フィンガープリントが使用されると、セキュリティで保護されなくなったため、 NU3043 警告が発生します。

    以前のすべてのバージョンの .NET SDK では、引き続き SHA-1 証明書フィンガープリントのみが受け入れられます。

  • --certificate-password <PASSWORD>

    必要に応じて、証明書のパスワードを指定します。 証明書がパスワードで保護されているが、パスワードが指定されていない場合、sign コマンドは失敗します。

    メモ

    sign コマンドでサポートされるのは非対話型モードのみです。 実行時にパスワードの入力は求められません。

  • --hash-algorithm <HASHALGORITHM>

    パッケージの署名に使用するハッシュ アルゴリズム。 既定値は SHA256 です。 使用可能な値は SHA256、SHA384、SHA512 です。

  • -o|--output

    署名済みパッケージの保存先となるディレクトリを指定します。 このオプションが指定されていない場合、既定では、元のパッケージが署名済みパッケージによって上書きされます。

  • --overwrite

    現在の署名を上書きする必要があることを示します。 既定では、パッケージに既に署名がある場合、コマンドは失敗します。

  • --timestamp-hash-algorithm <HASHALGORITHM>

    RFC 3161 タイムスタンプ サーバーで使用するハッシュ アルゴリズム。 既定値は SHA256 です。

  • --timestamper <TIMESTAMPINGSERVER>

    RFC 3161 タイムスタンプ サーバーの URL。

  • -v|--verbosity <LEVEL>

    コマンドの詳細レベルを設定します。 指定できる値は、q[uiet]m[inimal]n[ormal]d[etailed]、および diag[nostic] です。 既定値は、minimal です。 詳細については、「LoggerVerbosity」を参照してください。

  • -?|-h|--help

    コマンドの使用方法を示した説明を出力します。

使用例

  • 証明書 cert.pfx (パスワードで保護されていない) を使用して foo.nupkg に署名します。

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx
    
  • 証明書 cert.pfx (パスワードで保護された) を使用して foo.nupkg に署名します。

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password
    
  • 既定の証明書ストア (CurrentUser\My) で指定された SHA-1 フィンガープリントと一致する証明書 (パスワードで保護された) を使用して、foo.nupkg に署名します。

    dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password
    
  • 既定の証明書ストア (CurrentUser\My) で指定されたサブジェクト名 "Test certificate for testing signing" と一致する証明書 (パスワードで保護された) を使用して、foo.nupkg に署名します。

    dotnet nuget sign foo.nupkg --certificate-subject-name "Test certificate for testing signing" --certificate-password password
    
  • 証明書ストア CurrentUser\Root で指定された SHA-1 フィンガープリントと一致する証明書 (パスワードで保護された) を使用して、foo.nupkg に署名します。

    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
    
  • 証明書 cert.pfx (パスワードで保護された) を使用して foo.nupkg に署名し、http://timestamp.test でタイムスタンプを指定します。

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password --timestamper http://timestamp.test
    
  • 証明書 cert.pfx (パスワードで保護されていない) を使用して foo.nupkg に署名し、署名済みパッケージを指定されたディレクトリに保存します。

    dotnet nuget sign foo.nupkg --certificate-path cert.pfx --output c:\signed\
    
  • 証明書 cert.pfx (パスワードで保護されていない) を使用して foo.nupkg に署名し、既にパッケージに署名されている場合は現在の署名を上書きします。

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