この記事の対象: ✔️ .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 10 以降のバージョンでは、 警告はエラーに昇格されます。 SHA-2 ファミリフィンガープリント (SHA-256、SHA-384、SHA-512) のみがサポートされています。pre-.NET 9 バージョンの .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-256 フィンガープリントと一致する証明書 (パスワードで保護) を使用して foo.nupkg に署名します。
dotnet nuget sign foo.nupkg --certificate-fingerprint B2C40F2F8775D7B7EBEB76BD5A9D3A4BC3F4B8A4D8D7C5F8A4C6B3E7A9E2D5F1 --certificate-password password既定の証明書ストア (CurrentUser\My) で指定されたサブジェクト名 と一致する証明書 (パスワードで保護された) を使用して、"Test certificate for testing signing" に署名します。
dotnet nuget sign foo.nupkg --certificate-subject-name "Test certificate for testing signing" --certificate-password password証明書ストア CurrentUser\Root で指定した SHA-256 フィンガープリントと一致する証明書 (パスワードで保護) を使用して foo.nupkg に署名します。
dotnet nuget sign foo.nupkg --certificate-fingerprint B2C40F2F8775D7B7EBEB76BD5A9D3A4BC3F4B8A4D8D7C5F8A4C6B3E7A9E2D5F1 --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
.NET