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]
1 つの証明書ファイルまたは署名された elf オブジェクトからの標準出力情報を一覧表示します。選択されたフィールドは 1 行に表示されます。指定されたフィールドが指定されたファイルに適用されない場合、コマンドは標準出力なしで終了します。このサブコマンドのこの出力は、スクリプトやほかのコマンドで使用されることを目的にしています。
指定された秘密鍵と証明書ファイル、または署名と証明書ファイルを使用して、elf オブジェクトに署名します。
既存の署名されたオブジェクトを検証します。–c が指定されていない場合は、指定された証明書を使用するか、または /etc/crypto/certs および /etc/certs で適切な証明書を検索します。
elf オブジェクトのダイジェストを指定の形式で標準出力に出力します。デフォルトの形式は SHA-256 です。
サポートしているオプションは、次のとおりです。
PEM/PKCS#7 または ASN.1 BER 形式の X.509 証明書へのパスを指定します。
署名または検証されるオブジェクトへのパスを指定します。
–e オプションは、複数のオブジェクトを署名または検証するために複数回指定できます。
sign サブコマンドの場合は、署名の形式を指定します。有効な形式オプションは次のとおりです
デフォルト形式の Solaris 10 および更新。rsa_md5_sha1 形式は廃止されています。
このリリースのデフォルト形式。
このリリースの代替形式。
rsa_md5_sha1 以外の形式には、署名が適用された時間を示す、署名による情報タイムスタンプが含まれています。このタイムスタンプは暗号的に安全ではなく、また検証の一部としても使用されません。
list サブコマンドの場合は、出力にどのフィールドを表示するかを指定します。
list サブコマンドは次のオプションをサポートします。
証明書または ELF ファイル内のすべてのフィールドを一覧表示します。ELF ファイルの場合、表示される署名情報は、エンディアン、形式、バージョン、署名者、タイムスタンプ、署名、および OID です。
証明書ファイルの有効なフィールド指定子は次のとおりです。
サブジェクト DN (識別名)
発行者 DN
elf オブジェクトの有効なフィールド指定子は次のとおりです。
署名の形式
オブジェクトを署名するために使用される証明書のサブジェクト DN
署名が適用された時間 (ロケールのデフォルト形式)
PKCS#11 トークンを使用していないときの秘密鍵ファイルの場所を指定します。このファイルは、標準の PEM (Base 64) または DER (バイナリ) 形式の RSA 非公開鍵ファイルです。
–k オプションと –T オプションの両方を指定すると、エラーになります。
digest コマンドで出力するダイジェストファイルのパスを指定します。
トークンデバイスにアクセスするための PIN を保持しているファイルを指定します。pin_file で PIN が指定されていない場合、elfsign は PIN の入力を求めます。
–T オプションを指定せずに –P オプションを指定すると、エラーになります。
バイナリまたは Base64 でエンコードされた形式の署名ファイルのパスを指定します。署名ファイルは、秘密鍵と ELF オブジェクトのダイジェスト情報を使用して個別に作成されます。
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 オブジェクトに関する情報の判定
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
次の終了ステータスが返されます。
|
–c フラグが使用されていない場合に verify サブコマンドで検索されるディレクトリ。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
elfsign コマンドおよびサブコマンドは「確実」です。アプリケーションは elfsign の出力形式に依存すべきではありませんが、list サブコマンドの出力形式は「確実」です。