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]
1 つの証明書ファイルまたは署名された elf オブジェクトからの標準出力情報を一覧表示します。選択されたフィールドは 1 行に表示されます。指定されたフィールドが指定されたファイルに適用されない場合、コマンドは標準出力なしで終了します。このサブコマンドのこの出力は、スクリプトやほかのコマンドで使用されることを目的にしています。
指定された秘密鍵と証明書ファイル、または署名と証明書ファイルを使用して、elf オブジェクトに署名します。
既存の署名されたオブジェクトを検証します。–c オプションが指定されていない場合は、指定された証明書を使用するか、またはディレクトリ /etc/certs/elfsign および /etc/certs 内で適切な証明書を検索します。
elf オブジェクトのダイジェストを指定の形式で標準出力に出力します。デフォルトの形式は SHA-256 です。
特定のデータ範囲に署名される ELF データを、指定された output_file または標準出力に出力します。デフォルトのデータ範囲が解釈されます。
サポートしているオプションは、次のとおりです。
PEM/PKCS#7 または ASN.1 BER 形式の X.509 証明書へのパスを指定します。
署名する ELF データの範囲を指定します。有効な data_range オプションは次のとおりです。
ELF ファイル署名に見つかったデータ範囲を使用します。署名がない場合、デフォルトのデータ範囲を使用します。
署名されるデータは、ファイルのタイプに従って解釈されます。再配置可能な ELF ファイルおよびカーネルモジュールを「relobj」と同じように扱います。実行可能 ELF ファイルの場合、ELF ヘッダーおよび ELF プログラムセグメントに署名します。
署名されるデータは、ELF ヘッダーと ELF セクション (署名セクションを除く) です。これはデフォルトの範囲です。
署名されるデータは、ELF セクション (署名セクションと ELF ヘッダーを除く) です。このオプションは、古いリリースの署名ファイルに対してのみ使用します。
署名または検証されるオブジェクトへのパスを指定します。
–e オプションは、複数のオブジェクトを署名または検証するために複数回指定できます。
sign サブコマンドの場合は、署名の形式を指定します。有効な形式オプションは次のとおりです
ELF ファイル署名で見つかった形式を使用します。署名がない場合、デフォルトの形式を使用します。
デフォルトの暗号化署名アルゴリズム rsa_sha256 を使用します。
SHA-256 ダイジェストの RSA 署名。–F オプションが省略されている場合、これはデフォルトの形式です。
SHA-1 ダイジェストの RSA 署名。この形式は廃止されています。
SHA-1 ダイジェストの MD5 ダイジェストの RSA 署名。この形式は廃止されています。
–F オプションの代わりに、暗号化アルゴリズムの OID を指定します。たとえば、「-O 1.2.840.113549.1.1.11」は「-F rsa_sha256」と同等です。OID は検証されません。
list サブコマンドの場合は、出力にどのフィールドを表示するかを指定します。
list サブコマンドは次のオプションをサポートします。
証明書または ELF ファイル内のすべてのフィールドを一覧表示します。ELF ファイルの場合、表示される署名情報は、エンディアン、形式、バージョン、署名者、タイムスタンプ、署名、および OID です。
証明書ファイルの有効なフィールド指定子は次のとおりです。
サブジェクト DN (識別名)
発行者 DN
elf オブジェクトの有効なフィールド指定子は次のとおりです。
署名の形式
オブジェクトを署名するために使用される証明書のサブジェクト DN
署名が適用された時間 (ロケールのデフォルト形式)これは使用されなくなりました。
PKCS#11 トークンを使用していないときの秘密鍵ファイルの場所を指定します。このファイルは、標準の PEM (Base 64) または DER (バイナリ) 形式の RSA 非公開鍵ファイルです。
–k オプションと –T オプションの両方を指定すると、エラーになります。
data コマンドで出力する出力ファイルのパスを指定します。
トークンデバイスにアクセスするための PIN を保持しているファイルを指定します。pin_file で PIN が指定されていない場合、elfsign は PIN の入力を求めます。
–T オプションを指定せずに –P オプションを指定すると、エラーになります。
バイナリまたは Base64 でエンコードされた形式の署名ファイルのパスを指定します。署名ファイルは、秘密鍵と ELF オブジェクトの「elfsign data」サブコマンドによって作成されたファイルを使用して個別に作成されます。
pktool によって提供された、秘密鍵を保持している PKCS#11 トークンデバイスの URI を指定します。トークンラベル、トークン鍵ラベル、およびピンファイルは token_uri を介して指定できます。トークン鍵ラベル (オブジェクト) は必須の入力属性です。
–T オプションと –k オプションの両方を指定すると、エラーになります。
より詳細な情報を要求します。追加の出力には署名者と、署名形式に含まれている場合は、オブジェクトが署名された時間が含まれます。これは、安定した解析可能な出力ではありません。
次のオペランドを指定できます。
署名、検証、または一覧表示される 1 つ以上の elf オブジェクト。–e オプションを使用して、またはほかのすべてのオプションのあとに、少なくとも 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
次の終了ステータスが返されます。
|
–c フラグが使用されていない場合に verify サブコマンドで検索されるディレクトリ。
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|
elfsign コマンドおよびサブコマンドは「確実」です。アプリケーションは elfsign の出力形式に依存すべきではありませんが、list サブコマンドの出力形式は「確実」です。