Current File : //usr/man/zh_CN.UTF-8/man1/elfsign.1
'\" 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)