Go to main content

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

印刷ビューの終了

更新: 2018年8月8日
 
 

elfsign(1)

名前

elfsign - バイナリへの署名

形式

/usr/bin/elfsign sign [-v] 
-k private_key -c 
certificate_file
     -e elf_object [-d data_range] [-F 
format] [file]...
/usr/bin/elfsign sign [-v] 
-c certificate_file
     -e elf_object -T token_uri [-d data_range] [-F format] [file]...
/usr/bin/elfsign sign [-v] -c certificate_file
	  [-e elf_object] -s signature_file [-d data_range] 
         [-F format|-O oid] [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 [file]...
/usr/bin/elfsign digest [-o digest_file]
       [-e elf_object] [-F format] [file]
/usr/bin/elfsign data [-o output_file]
       [-e elf_object] [-d data_range] [file]

説明

list

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

sign

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

verify

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

digest

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

data

特定のデータ範囲に署名される ELF データを、指定された output_file または標準出力に出力します。デフォルトのデータ範囲が解釈されます。

オプション

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

–c certificate_file

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

–d data_range

署名する ELF データの範囲を指定します。有効な data_range オプションは次のとおりです。

current

ELF ファイル署名に見つかったデータ範囲を使用します。署名がない場合、デフォルトのデータ範囲を使用します。

interpret

署名されるデータは、ファイルのタイプに従って解釈されます。再配置可能な ELF ファイルおよびカーネルモジュールを「relobj」と同じように扱います。実行可能 ELF ファイルの場合、ELF ヘッダーおよび ELF プログラムセグメントに署名します。

relobj

署名されるデータは、ELF ヘッダーと ELF セクション (署名セクションを除く) です。これはデフォルトの範囲です。

legacy

署名されるデータは、ELF セクション (署名セクションと ELF ヘッダーを除く) です。このオプションは、古いリリースの署名ファイルに対してのみ使用します。

–e elf_object

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

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

–F format

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

current

ELF ファイル署名で見つかった形式を使用します。署名がない場合、デフォルトの形式を使用します。

default

デフォルトの暗号化署名アルゴリズム rsa_sha256 を使用します。

rsa_sha256

SHA-256 ダイジェストの RSA 署名。–F オプションが省略されている場合、これはデフォルトの形式です。

rsa_sha1

SHA-1 ダイジェストの RSA 署名。この形式は廃止されています。

rsa_md5_sha1

SHA-1 ダイジェストの MD5 ダイジェストの RSA 署名。この形式は廃止されています。

–O oid

–F オプションの代わりに、暗号化アルゴリズムの OID を指定します。たとえば、「-O 1.2.840.113549.1.1.11」は「-F rsa_sha256」と同等です。OID は検証されません。

–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 output_file

data コマンドで出力する出力ファイルのパスを指定します。

–P pin_file

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

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

–s signature_file

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

–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 データ範囲を指定するオブジェクトの署名

これは、証明書 DN: ORCL の接頭辞になります

example$ elfsign sign -d relobj -k myprivatekey -c mycert
          -e lib/libmylib.so.1
使用例 4 オブジェクトに関する情報の判定

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.
使用例 5 トークン 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'
使用例 6 対話型 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:
使用例 7 署名ファイルを使用した ELF オブジェクトの署名

ELF オブジェクトから署名されるデータを格納するファイルを作成します。

example$ elfsign data -o /path/to/data_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 dgst -sha256 -binary /path/to/data_file
           >/path/to/digest_file
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/certs/elfsign
/etc/certs

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

属性

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

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

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

関連項目

date(1)pktool(1)attributes(7)cryptoadm(8)