Go to main content
マニュアルページ セク ション 1: ユー ザーコマンド

印刷ビューの終了

更新: 2016年12月6日
 
 

elfsign(1)

名前

elfsign - バイナリへの署名

形式

/usr/bin/elfsign sign [-v] 
-k private_key -c 
certificate_file
     -e elf_object [-F 
format] [file]...
/usr/bin/elfsign sign [-v] 
-c certificate_file
     -e elf_object -T 
token_label [-P pin_file] [
-F format] [file]...
/usr/bin/elfsign sign [-v] -c certificate_file
	  [-e elf_object] -s signature_file [-F format] [file]
/usr/bin/elfsign verify [-c 
certificate_file] 
     [-v] -e elf_object [file]...
/usr/bin/elfsign list 
-f field -c 
certificate_file
/usr/bin/elfsign list 
-f field -e 
elf_object
/usr/bin/elfsign digest [-v] [-o digest_file]
	  [-e elf_object] [-F format] [file]

説明

list

1 つの証明書ファイルまたは署名された elf オブジェクトからの標準出力情報を一覧表示します。選択されたフィールドは 1 行に表示されます。指定されたフィールドが指定されたファイルに適用されない場合、コマンドは標準出力なしで終了します。このサブコマンドのこの出力は、スクリプトやほかのコマンドで使用されることを目的にしています。

sign

指定された秘密鍵と証明書ファイル、または署名と証明書ファイルを使用して、elf オブジェクトに署名します。

verify

既存の署名されたオブジェクトを検証します。–c が指定されていない場合は、指定された証明書を使用するか、または /etc/crypto/certs および /etc/certs で適切な証明書を検索します。

digest

elf オブジェクトのダイジェストを指定の形式で標準出力に出力します。デフォルトの形式は SHA-256 です。

オプション

サポートしているオプションは、次のとおりです。

–c certificate_file

PEM/PKCS#7 または ASN.1 BER 形式の X.509 証明書へのパスを指定します。

–e elf_object

署名または検証されるオブジェクトへのパスを指定します。

–e オプションは、複数のオブジェクトを署名または検証するために複数回指定できます。

–F format

sign サブコマンドの場合は、署名の形式を指定します。有効な形式オプションは次のとおりです

rsa_md5_sha1

デフォルト形式の Solaris 10 および更新。rsa_md5_sha1 形式は廃止されています。

rsa_sha256

このリリースのデフォルト形式。

rsa_sha1

このリリースの代替形式。

rsa_md5_sha1 以外の形式には、署名が適用された時間を示す、署名による情報タイムスタンプが含まれています。このタイムスタンプは暗号的に安全ではなく、また検証の一部としても使用されません。

–f field

list サブコマンドの場合は、出力にどのフィールドを表示するかを指定します。

list サブコマンドは次のオプションをサポートします。

–f all

証明書または ELF ファイル内のすべてのフィールドを一覧表示します。ELF ファイルの場合、表示される署名情報は、エンディアン、形式、バージョン、署名者、タイムスタンプ、署名、および OID です。

証明書ファイルの有効なフィールド指定子は次のとおりです。

subject

サブジェクト DN (識別名)

issuer

発行者 DN

elf オブジェクトの有効なフィールド指定子は次のとおりです。

format

署名の形式

signer

オブジェクトを署名するために使用される証明書のサブジェクト DN

time

署名が適用された時間 (ロケールのデフォルト形式)

–k private_key

PKCS#11 トークンを使用していないときの秘密鍵ファイルの場所を指定します。このファイルは、標準の PEM (Base 64) または DER (バイナリ) 形式の RSA 非公開鍵ファイルです。

–k オプションと –T オプションの両方を指定すると、エラーになります。

–o digest_file

digest コマンドで出力するダイジェストファイルのパスを指定します。

–P pin_file

トークンデバイスにアクセスするための PIN を保持しているファイルを指定します。pin_file で PIN が指定されていない場合、elfsign は PIN の入力を求めます。

–T オプションを指定せずに –P オプションを指定すると、エラーになります。

–s signature_file

バイナリまたは Base64 でエンコードされた形式の署名ファイルのパスを指定します。署名ファイルは、秘密鍵と ELF オブジェクトのダイジェスト情報を使用して個別に作成されます。

–T token_uri

pktool によって提供された、秘密鍵を保持している PKCS#11 トークンデバイスの URI を指定します。トークンラベル、トークン鍵ラベル、およびピンファイルは token_uri を介して指定できます。トークン鍵ラベル (オブジェクト) は必須の入力属性です。

–T オプションと –k オプションの両方を指定すると、エラーになります。

–v

より詳細な情報を要求します。追加の出力には署名者と、署名形式に含まれている場合は、オブジェクトが署名された時間が含まれます。これは、安定した解析可能な出力ではありません。

オペランド

次のオペランドを指定できます。

file

署名または検証される 1 つ以上の elf オブジェクト。–e オプションを使用して、またはほかのすべてのオプションのあとに、少なくとも 1 つの elf オブジェクトを指定する必要があります。

使用例 1 ファイル内の鍵/証明書を使用した ELF オブジェクトの署名
example$ elfsign sign -k myprivatekey -c mycert -e lib/libmylib.so.1
使用例 2 elf オブジェクトの署名の検証

example$ elfsign verify -c mycert -e lib/libmylib.so.1
elfsign: verification of lib/libmylib.so.1 passed
使用例 3 オブジェクトに関する情報の判定

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.
使用例 4 トークン URI を使用した ELF オブジェクトの署名
example$ elfsign sign -c mycert -e lib/libmylib.so.1  
          -T 'pkcs11:token=Sun Software PKCS#11 softtoken; 
          object=mykey;pinfile=/path/to/pinfile'
使用例 5 対話型 PIN 付きのトークン URI を使用した ELF オブジェクトの署名
example$ elfsign sign -c mycert -e lib/libmylib.so.1 \
          -T 'pkcs11:token=Sun Software PKCS#11 softtoken;object=mykey'
Enter PIN for Sun Software PKCS#11 softtoken:
使用例 6 署名ファイルを使用した ELF オブジェクトの署名

ELF オブジェクトのダイジェストを作成します。

example$ elfsign digest -o /path/to/digest_file -e /lib/libmylib.so.1

openssl コマンドを使用して秘密鍵と証明書ファイルを作成します。

example$ openssl genrsa -out /path/to/private_key 2048
example$ openssl req -new -x509 -days 999 -key /path/to/private_key
     -out /path/to/certificate_file

openssl コマンドを使用して署名ファイルを作成します。

example$ openssl rsautl -sign -in /path/to/digest_file
           -out /path/to/signature_file -inkey /path/to/private_key

署名ファイルを使用して ELF オブジェクトに署名します。

example$ elfsign sign -c /path/to/certificate_file
           -s /path/to/signature_file -e /lib/libmylib.so.1

終了ステータス

次の終了ステータスが返されます。

意味
サブコマンド
0
操作の成功
sign/verify
1
無効な引数
2
ELF オブジェクトの検証に失敗しました
verify
3
ELF オブジェクトを開けません
sign/verify
4
証明書ロードをできないか、または無効な証明書です
sign/verify
5
非公開鍵をロードできないか、秘密鍵が無効か、またはトークンラベルが無効な署名です
sign
6
署名の追加に失敗しました
sign
7
署名されていないオブジェクトを検証しようとしているか、またはオブジェクトが ELF ファイルではありません
verify

ファイル

/etc/crypto/certs

–c フラグが使用されていない場合に verify サブコマンドで検索されるディレクトリ。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
developer/base-developer-utilities
インタフェースの安定性
下記を参照。

elfsign コマンドおよびサブコマンドは「確実」です。アプリケーションは elfsign の出力形式に依存すべきではありませんが、list サブコマンドの出力形式は「確実」です。

関連項目

date(1)pktool(1)cryptoadm(1M)attributes(5)