在 Oracle® Solaris 11.2 中使用映像包管理系统打包和交付软件

退出打印视图

更新时间: 2014 年 7 月
 
 

定义签名操作

与其他所有清单内容一样,签名也表示为操作。由于清单包含所有软件包元数据(例如文件权限、所有权和内容散列),用于验证清单自发布后尚未更改的签名操作是系统验证的重要部分。

signature 操作形成一个包含已交付的二进制文件的树,从而使对已安装软件进行完整验证成为可能。

除了验证以外,签名也可以用来表示其他组织或第三方的批准。例如,一旦软件包符合产品使用的要求,内部 QA 组织就可以对软件包的清单进行签名。安装过程中可能需要这些批准。

一个清单可以有多个独立签名。可以添加或删除签名,而不会使存在的其他签名失效。此功能便于产品移交,使用签名来表示各个环节的完成。后续步骤可以随时选择删除以前的签名。

signature 操作使用以下格式:

signature hash_of_certificate algorithm=signature_algorithm \
    value=signature_value \
    chain="hashes_of_certificates_needed_to_validate_primary_certificate" \
    version=pkg_version_of_signature

有效负荷和 chain 属性表示保密性增强的电子邮件 (Privacy Enhanced Mail, PEM) 文件的包管理散列,包含可从原始系统信息库检索的 x.509 证书。有效负荷证书是用于验证 value 中的值的证书。value 是清单的消息文本的已签名散列,按照下面的讨论进行准备。

出现的其他证书需要形成从有效负荷证书到信任锚的证书路径。

支持两种类型的签名算法:

RSA

第一种签名算法是 RSA 算法组。RSA 签名算法的一个示例是 rsa-sha256。连字符后的字符串(此示例中的 sha256)指定用来将消息文本更改为 RSA 算法可以使用的单值的散列算法。

仅散列

第二种签名算法是仅计算散列。这种算法主要用于测试和过程验证目的,并将散列呈现为签名值。如果没有有效负荷证书散列,则说明使用了这种签名操作。如果映像配置为检查签名,将验证这种签名操作。然而,如果要求签名,此签名操作不能算作签名。以下示例显示了仅散列签名操作:

signature algorithm=hash_algorithm value=hash \
    version=pkg_version_of_signature