パッケージ信頼境界を管理する

署名済みパッケージのインストールには、特定のアクションは必要ありません。ただし、署名後にコンテンツが変更された場合、インストールはエラー NU3008 でブロックされます。

警告

信頼できない証明書で署名されたパッケージは署名なしと見なされ、他の署名されていないパッケージと同様に警告やエラーなしでインストールされます。

パッケージの署名要件を構成する

Note

NuGet 4.9.0 以降および Visual Studio バージョン 15.9 以降が Windows で必要です。

nuget.config ファイルで nuget config コマンドを使用して signatureValidationModerequire に設定することで、NuGet クライアントによるパッケージの署名の検証方法を構成できます。

nuget.exe config -set signatureValidationMode=require
  <config>
    <add key="signatureValidationMode" value="require" />
  </config>

このモードにより、nuget.config ファイルで信頼されているいずれかの証明書で、すべてのパッケージが署名されていることが検証されます。 このファイルでは、どの作成者およびリポジトリを信頼するか、証明書のフィンガープリントに基づいて指定できます。

パッケージの作成者を信頼する

作成者の署名に基づいてパッケージを信頼するには、nuget.config で trusted-signers コマンドを使用し author プロパティを設定します。

nuget.exe  trusted-signers Add -Name MyCompanyCert -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 -FingerprintAlgorithm SHA256
<trustedSigners>
  <author name="MyCompanyCert">
    <certificate fingerprint="CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
  </author>
</trustedSigners>

ヒント

nuget.exeverify コマンドを使用して、証明書のフィンガープリントの SHA256 値を取得します。

リポジトリのパッケージをすべて信頼する

リポジトリの署名に基づいてパッケージを信頼するには、次のように repository 要素を使用します。

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
  </repository>
</trustedSigners>

パッケージの所有者を信頼する

リポジトリの署名には、パッケージの所有者を送信時に特定するメタデータが追加で含まれています。 所有者の一覧に基づいてリポジトリでパッケージを制限するには、次のようにします。

<trustedSigners>  
  <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
    <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B4676070...." 
                  hashAlgorithm="SHA256" 
                allowUntrustedRoot="false" />
      <owners>microsoft;nuget</owners>
  </repository>
</trustedSigners>

パッケージに所有者が複数いて、そのうちのいずれかの所有者が信頼されているリストに含まれる場合、パッケージは正常にインストールされます。

信頼されないルート証明書

場合によっては、ローカル コンピューターの信頼されたルートに関連付けられていない証明書を使用した検証を有効にしたい場合があります。 この動作をカスタマイズするには、allowUntrustedRoot 属性を使用できます。

リポジトリの証明書を同期する

パッケージ リポジトリでは、使用する証明書をそのサービス インデックスで宣言する必要があります。 証明書の有効期限が切れるときなどに、実質的にこれらの証明書はリポジトリで更新されます。 これが発生した場合、特定のポリシーを使用するクライアントは、新しく追加された証明書を含めるために構成を更新する必要があります。 リポジトリに関連付けられている信頼されている署名者は、nuget.exetrusted-signers sync コマンドを使用して簡単にアップグレードできます。

スキーマ リファレンス

クライアント ポリシーの完全なスキーマ リファレンスは、nuget.config のリファレンスで見つけることができます。