Version: 6000.3
语言: 中文
包状态和生命周期
依赖

包签名

从 Unity 6.3 开始,包管理器会检查 Unity 生态系统中使用的所有 tarball 包上的数字包签名。

包签名是一种加密标识符,有助于验证包的来源,并确保在开发人员创建包后没有更改。包签名使每个人都可以更轻松地确认包的来源和完整性,并发现任何未经授权的更改或篡改。建议的最佳做法是让所有发布者对其包进行签名。采取这个简单的步骤有助于 Unity 社区的成员在使用包时更加自信。

当您尝试安装具有签名问题的注册表包时,“包管理器”窗口会标记该包。下表说明了每个标志以及如何解决它。

图标 描述 建议的作
显示包签名错误的图标 此包有签名,但签名无效。这可能表明该软件包已被篡改、不安全或恶意。 考虑从项目中删除此包。
显示包签名警告的图标 此包裹缺少签名。Unity 无法验证此包。为了保护您的项目,建议的最佳做法是仅使用签名包。 作为包使用者,请包所有者发布带有签名的包版本,然后安装签名版本。
作为包发布者,对包进行签名,然后分发已签名的版本。

以发布者身份对包进行签名

从 Unity 6.3 开始,发布者可以直接从包管理器窗口或使用命令行参数对其包进行签名。

对包进行签名时,必须将其与组织之一相关联,以便包使用者可以快速确定谁创建并拥有它。

唯一可以签名的包是在“包管理器”窗口中具有“自定义”或“本地”标签的包:

从“包管理器”窗口对包进行签名

要从“包管理器”窗口对包进行签名,请执行以下作:

  1. 确保已登录到 Unity Hub。

  2. 打开“包管理器”窗口。

  3. 选择要签名的包。

  4. 选择导出。

    带有可编辑包的“导出”按钮的“包管理器”窗口
    带有可编辑包的“导出”按钮的“包管理器”窗口
  5. 在显示的模式中,打开“创作组织”菜单,然后选择要与此包关联的组织。

  6. 选择存储已签名包的位置,然后选择选择文件夹 (Windows) 或选择 (macOS)。

    注意:如果该位置已存在该包,则会显示一条警告消息,提示您确认覆盖该文件。

  7. 导出过程完成后,文件管理应用程序将在您指定的位置打开,并显示新创建的文件。“控制台”窗口中还会显示一条确认消息。

导出作将创建一个 tarball 文件 (.tgz),这是一个压缩的存档文件。此 tarball 文件包含一个加密文件 (.attestation.p7m),其中包含包签名。

有关将此 tarball 文件分发给其他人的信息,请参阅共享您的包。

使用命令行参数对包进行签名

如果使用持续集成 (CI) 发布包,则可以从命令行对包进行签名。

要收集组织的组织 ID 并从命令行对包进行签名,请执行以下作:

  1. 如果使用要签名的包的项目已打开,请关闭 Unity 编辑器。

  2. 转到 Unity Cloud 仪表板 (https://cloud.unity.com/account/my-organizations) 并选择要用于对包进行签名的组织。

    注意:您还可以在仪表板右上角选择帐户的链接,然后选择为目标组织切换组织,然后再次打开菜单并选择管理组织。

  3. “我的组织”页面(或“组织设置”页面)中,找到“组织 ID”字段。

  4. 复制组织 ID 值。

  5. 打开命令提示符窗口。

  6. 将目录更改为 Unity 编辑器的位置。有关更多信息,请参阅 Unity 编辑器命令行参数查找编辑器程序文件

  7. 输入以下命令,替换尖括号表示的占位符值:

窗户
Unity.exe -batchmode -username <your_username> -password <your_password> \
    -upmPack <path_to_package_folder> <path_to_tarball> \
    -cloudOrganization <your_organization_id>
macOS作系统
Unity.app/Contents/MacOS/Unity -batchmode -username <your_username> -password <your_password> \
    -upmPack <path_to_package_folder> <path_to_tarball> \
    -cloudOrganization <your_organization_id>
要替换的参数 描述
<your_username> 用于登录 Unity Hub 或 Unity 编辑器的用户名。
<your_password> 用于登录 Unity Hub 或 Unity 编辑器的密码。
<path_to_package_folder> 包含package.json文件。
注意:不包括
package.json在此参数值中。
<path_to_tarball> 要保存已签名 tarball 文件的输出路径 (.tgz).
【注】如果文件夹不存在,命令会为您创建该文件夹。
<your_organization_id> 您从 Unity Cloud 仪表板复制的组织 ID。

输出 tarball 文件包含一个加密文件 (.attestation.p7m),其中包含包签名。

有关将此 tarball 文件分发给其他人的信息,请参阅共享您的包。

其他信息

包状态和生命周期
依赖