Skip to content
This repository was archived by the owner on Mar 6, 2025. It is now read-only.

Latest commit

 

History

History
60 lines (44 loc) · 3.57 KB

File metadata and controls

60 lines (44 loc) · 3.57 KB
title 已签名包
description NuGet 包签名的要求。
author rido-min
ms.author rmpablos
ms.date 05/18/2018
ms.topic reference
ms.reviewer ananguar
ms.openlocfilehash 7384e8b30cb2ec5fe53ea0fe485858bc1f7b3c43
ms.sourcegitcommit ddb52131e84dd54db199ce8331f6da18aa3feea1
ms.translationtype MT
ms.contentlocale zh-CN
ms.lasthandoff 03/16/2020
ms.locfileid 79428281

已签名的包

NuGet 4.6.0 + 和 Visual Studio 2017 版本15.6 及更高版本

NuGet 包可以包含一个数字签名,该签名提供针对篡改内容的保护。 此签名是通过 x.509 证书生成的,该证书还将授权校样添加到包的实际来源。

签名包提供了最强大的端到端验证。 NuGet 签名有两种不同的类型:

  • 作者签名。 作者签名可保证自作者对包进行签名后包未修改,无论包传送到哪个存储库或传输方法。 此外,创作签名包还为 nuget.org 发布管道提供额外的身份验证机制,因为必须提前注册签名证书。 有关详细信息,请参阅注册证书
  • 存储库签名。 存储库签名为存储库中的所有包提供完整性保证,无论它们是否为作者签名,即使这些包是从其签名的原始存储库以外的位置获取的。

有关创建作者签名包的详细信息,请参阅签署包nuget 签名命令

Important

目前仅在 Windows 上使用 nuget.exe 时才支持包签名。 目前仅在使用 nuget.exe 或 Windows 上的 Visual Studio 时,才支持验证已签名的包

证书要求

包签名需要一个代码签名证书,该证书是一种特殊类型的证书,适用于 id-kp-codeSigning 目的 [RFC 5280 部分 4.2.1.12]。 此外,证书的 RSA 公钥长度必须为2048位或更高。

时间戳要求

签名包应包含 RFC 3161 时间戳,以确保签名有效期超出包签名证书的有效期。 用于签署时间戳的证书必须对 id-kp-timeStamping 目的有效 [RFC 5280 部分 4.2.1.12]。 此外,证书的 RSA 公钥长度必须为2048位或更高。

可以在包签名技术规范(GitHub)中找到其他技术详细信息。

NuGet.org 上的签名要求

nuget.org 对接受签名的包有其他要求:

  • 主签名必须是作者签名。
  • 主签名必须有一个有效的时间戳。
  • 作者签名及其时间戳签名的 x.509 证书:
    • 必须具有 RSA 公钥2048或更高版本。
    • 在 nuget.org 上的包验证时,必须在其每个当前 UTC 时间的有效期内。
    • 必须链接到 Windows 上默认受信任的受信任根证书颁发机构。 拒绝了用自行颁发的证书签名的包。
    • 的用途必须有效:
      • 作者签名证书必须有效,以便进行代码签名。
      • 对于时间戳,时间戳证书必须有效。
    • 不能在签名时撤销。 (这可能不会在提交时 knowable,因此 nuget.org 会定期复查列为吊销状态)。

相关文章