'\" te .\" Copyright 2009, 2015, Oracle and/or its affiliates.All rights reserved. .TH elfsign 1 "2015 年 9 月18 日" "SunOS 5.11" "用户命令" .SH 名称 elfsign \- 对二进制文件签名 .SH 用法概要 .LP .nf \fB/usr/bin/elfsign\fR sign [\fB-v\fR] \fB-k\fR \fIprivate_key\fR \fB-c\fR \fIcertificate_file\fR \fB-e\fR \fIelf_object\fR [\fB-F\fR \fIformat\fR] [file]... .fi .LP .nf \fB/usr/bin/elfsign\fR sign [\fB-v\fR] \fB-c\fR \fIcertificate_file\fR \fB-e\fR \fIelf_object\fR \fB-T\fR \fItoken_label\fR [\fB-P\fR \fIpin_file\fR] [\fB-F\fR \fIformat\fR] [file]... .fi .LP .nf /usr/bin/elfsign sign [-v] -c \fIcertificate_file\fR [-e \fIelf_object\fR] -s \fIsignature_file\fR [-F \fIformat\fR] [\fIfile\fR] .fi .LP .nf \fB/usr/bin/elfsign\fR verify [\fB-c\fR \fIcertificate_file\fR] [\fB-v\fR] \fB-e\fR \fIelf_object\fR [file]... .fi .LP .nf \fB/usr/bin/elfsign\fR \fIlist\fR \fB-f\fR \fIfield\fR \fB-c\fR \fIcertificate_file\fR .fi .LP .nf \fB/usr/bin/elfsign\fR \fIlist\fR \fB-f\fR \fIfield\fR \fB-e\fR \fIelf_object\fR .fi .LP .nf /usr/bin/elfsign digest [-v] [-o \fIdigest_file\fR] [-e \fIelf_object\fR] [-F \fIformat\fR] [\fIfile\fR] .fi .SH 描述 .sp .ne 2 .mk .na \fB\fBlist\fR\fR .ad .RS 10n .rt 列出单个证书文件或已签名的 elf 目标文件的标准输出信息。选定的字段显示在一行中。如果指定的字段不适用于指定的文件,此命令将终止,且没有标准输出。此子命令的此输出用于供脚本或其他命令使用。 .RE .sp .ne 2 .mk .na \fB\fBsign\fR\fR .ad .RS 10n .rt 使用给定的私钥和证书文件或签名和证书文件为 elf 目标文件签名。 .RE .sp .ne 2 .mk .na \fB\fBverify\fR\fR .ad .RS 10n .rt 验证现有的签名目标文件。使用给定的证书,或在 \fB/etc/crypto/certs\fR 和 \fB/etc/certs\fR 中搜索合适的证书(如果未指定\fB- c\fR)。 .RE .sp .ne 2 .mk .na \fB\fBdigest\fR\fR .ad .RS 10n .rt 在标准输出上以给定格式列显 elf 目标文件的摘要。SHA-256 是缺省格式。 .RE .SH 选项 .sp .LP 支持以下选项: .sp .ne 2 .mk .na \fB\fB-c\fR \fIcertificate_file\fR\fR .ad .RS 23n .rt 指定 PEM/PKCS#7 或 ASN.1 BER 格式的 X.509 证书所在的路径。 .RE .sp .ne 2 .mk .na \fB\fB-e\fR \fIelf_object\fR\fR .ad .RS 23n .rt 指定要签名或验证的目标文件所在的路径。 .sp 对多个目标文件进行签名或验证时,可多次指定 \fB-e\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-F\fR \fIformat\fR\fR .ad .RS 23n .rt 对于 \fBsign\fR 子命令,指定签名的格式。有效的格式选项包括 .sp .ne 2 .mk .na \fB\fBrsa_md5_sha1\fR\fR .ad .RS 16n .rt Solaris 10 及其更新的缺省格式,\fBrsa_md5_sha1\fR 格式已过时。 .RE .sp .ne 2 .mk .na \fB\fBrsa_sha256\fR\fR .ad .RS 16n .rt 此发行版的缺省格式。 .RE .sp .ne 2 .mk .na \fB\fBrsa_sha1\fR\fR .ad .RS 16n .rt 此发行版的替代格式。 .RE \fBrsa_md5_sha1\fR 以外的格式在签名中还包括一个信息时间戳,表示应用签名的时间。此时间戳没有采用加密形式来保证安全,也不用于验证。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR \fIfield\fR\fR .ad .RS 23n .rt 对于 \fBlist\fR 子命令,指定输出中应显示的字段。 .sp \fBlist\fR 子命令支持以下选项: .sp .ne 2 .mk .na \fB\fB-f\fR \fBall\fR\fR .ad .RS 10n .rt 列出证书或 ELF 文件中的所有字段。对于 ELF 文件,显示以下签名信息:字节存储顺序、格式、版本、签名者、时间戳、签名和 OID。 .RE 证书文件的有效字段说明符包括: .sp .ne 2 .mk .na \fBsubject\fR .ad .RS 11n .rt 主题 DN(Distinguished Name,标识名) .RE .sp .ne 2 .mk .na \fBissuer\fR .ad .RS 11n .rt 签发者 DN .RE elf 目标文件的有效字段说明符包括: .sp .ne 2 .mk .na \fBformat\fR .ad .RS 10n .rt 签名的格式 .RE .sp .ne 2 .mk .na \fBsigner\fR .ad .RS 10n .rt 目标文件签名所用证书的主题 DN .RE .sp .ne 2 .mk .na \fBtime\fR .ad .RS 10n .rt 应用签名的时间,格式采用语言环境的缺省格式 .RE .RE .sp .ne 2 .mk .na \fB\fB-k\fR \fIprivate_key\fR\fR .ad .RS 23n .rt 指定不使用 PKCS#11 令牌时的私钥文件位置。此文件为 RSA 私钥文件,其格式为标准 PEM (base64) 或 DER(二进制)格式。 .sp 同时指定 \fB-k\fR 和 \fB-T\fR 选项会出错。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fIdigest_file\fR\fR .ad .RS 23n .rt 指定要使用 \fBdigest\fR 命令输出的摘要文件的路径。 .RE .sp .ne 2 .mk .na \fB\fB-P\fR \fIpin_file\fR\fR .ad .RS 23n .rt 指定访问令牌设备所用的 PIN 保存在哪个文件中。如果未在 \fIpin_file\fR 中提供 PIN,\fBelfsign\fR 将提示您输入 PIN。 .sp 指定 \fB-P\fR 选项而不指定 \fB-T\fR 选项会出错。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR \fIsignature_file\fR\fR .ad .RS 23n .rt 指定二进制或 base64 编码格式的签名文件的路径。签名文件是使用私钥和 elf 目标文件的摘要信息单独创建的。 .RE .sp .ne 2 .mk .na \fB\fB-T\fR \fItoken_uri\fR\fR .ad .RS 23n .rt 指定持有私钥的 PKCS#11 令牌设备的 URI,URI 由 \fBpktool\fR 提供。可以通过 \fItoken_uri\fR 指定令牌标签、令牌密钥标签和 PIN 文件;令牌密钥标签(目标文件)是必需的输入属性。 .sp 同时指定 \fB-T\fR 和 \fB-k\fR 选项会出错。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .RS 23n .rt 请求提供更为详细的信息。附加输出包括签名者和为目标文件签名的时间(如果签名格式中包含签名时间)。此输出不是稳定的可解析输出。 .RE .SH 操作数 .sp .LP 支持下列操作数: .sp .ne 2 .mk .na \fB\fIfile\fR\fR .ad .RS 8n .rt 要签名或验证的一个或多个 elf 目标文件。必须至少指定一个 elf 目标文件,要么通过 \fB-e\fR 选项指定,要么在所有其他选项后指定。 .RE .SH 示例 .LP \fB示例 1 \fR使用某个文件中的密钥/证书为 ELF 目标文件签名 .sp .in +2 .nf example$ elfsign sign -k myprivatekey -c mycert -e lib/libmylib.so.1 .fi .in -2 .sp .LP \fB示例 2 \fR验证 \fBelf\fR 目标文件的签名 .sp .in +2 .nf example$ elfsign verify -c mycert -e lib/libmylib.so.1 elfsign: verification of lib/libmylib.so.1 passed .fi .in -2 .sp .LP \fB示例 3 \fR确定有关目标文件的信息 .sp .in +2 .nf example$ elfsign list -f format -e lib/libmylib.so.1 rsa_md5_sha1 example$ elfsign list -f signer -e lib/libmylib.so.1 CN=VENDOR, OU=Software Development, O=Vendor Inc. .fi .in -2 .sp .LP \fB示例 4 \fR使用令牌 URI 为 ELF 目标文件签名 .sp .in +2 .nf example$ \fBelfsign sign -c mycert -e lib/libmylib.so.1 -T 'pkcs11:token=Sun Software PKCS#11 softtoken; object=mykey;pinfile=/path/to/pinfile'\fR .fi .in -2 .sp .LP \fB示例 5 \fR使用令牌 URI 和交互式 PIN 为 ELF 目标文件签名 .sp .in +2 .nf example$ \fBelfsign sign -c mycert -e lib/libmylib.so.1 \ -T 'pkcs11:token=Sun Software PKCS#11 softtoken;object=mykey'\fR Enter PIN for Sun Software PKCS#11 softtoken: .fi .in -2 .sp .LP \fB示例 6 \fR使用签名文件为 ELF 目标文件签名 .sp .LP 创建 ELF 目标文件的摘要。 .sp .in +2 .nf example$ \fBelfsign digest -o /path/to/digest_file -e /lib/libmylib.so.1\fR .fi .in -2 .sp .sp .LP 使用 \fBopenssl\fR 命令创建私钥和证书文件。 .sp .in +2 .nf example$ \fBopenssl genrsa -out /path/to/private_key 2048\fR example$ \fBopenssl req -new -x509 -days 999 -key /path/to/private_key\fR \fB-out /path/to/certificate_file\fR .fi .in -2 .sp .sp .LP 使用 openssl 命令创建签名文件。 .sp .in +2 .nf example$ \fBopenssl rsautl -sign -in /path/to/digest_file\fR \fB-out /path/to/signature_file -inkey /path/to/private_key\fR .fi .in -2 .sp .sp .LP 使用该签名文件为 ELF 目标文件签名。 .sp .in +2 .nf example$ \fBelfsign sign -c /path/to/certificate_file\fR \fB-s /path/to/signature_file -e /lib/libmylib.so.1\fR .fi .in -2 .sp .SH 退出状态 .sp .LP 将返回以下退出值: .sp .sp .TS tab(); cw(1i) cw(3i) cw(1.5i) lw(1i) lw(3i) lw(1.5i) . 值含义子命令 \fB0\fR操作成功sign/verify \fB1\fR参数无效 \fB2\fR无法验证 ELF 目标文件 verify 3无法打开 ELF 目标文件sign/verify 4无法装入证书或证书无效sign/verify 5T{ 无法装入私钥,私钥无效或令牌标签无效 T}sign 6无法添加签名sign 7T{ 尝试验证未签名的目标文件或目标文件不是 ELF 文件 T}verify .TE .SH 文件 .sp .ne 2 .mk .na \fB\fB/etc/crypto/certs\fR\fR .ad .RS 21n .rt 未使用 \fB-c\fR 标志时,供 \fBverify\fR 子命令搜索的目录 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性developer/base-developer-utilities _ 接口稳定性请参见下文。 .TE .sp .LP \fBelfsign\fR 命令及其子命令是 "Committed"(已确定)。尽管应用程序不应依赖于 \fBelfsign\fR 的输出格式,但 \fBlist\fR 子命令的输出格式仍为 "Committed"(已确定)。 .SH 另请参见 .sp .LP \fBdate\fR(1)、\fBpktool\fR(1)、\fBcryptoadm\fR(1M)、\fBattributes\fR(5)