rsautl(1)
=pod =head1 NAME
NAME
rsautl - RSA utility
rsautl - RSA ユーティリティ
=head1 SYNOPSIS
SYNOPSIS
B<openssl> B<rsautl> [B<-in file>] [B<-out file>] [B<-inkey file>] [B<-pubin>] [B<-certin>] [B<-sign>] [B<-verify>] [B<-encrypt>] [B<-decrypt>] [B<-pkcs>] [B<-ssl>] [B<-raw>] [B<-hexdump>] [B<-asn1parse>]
=head1 DESCRIPTION
DESCRIPTION
The B<rsautl> command can be used to sign, verify, encrypt and decrypt data using the RSA algorithm.
rsautl コマンドは RSA アルゴリズムを利用して、署名、検証、暗号化及び復号化を行なう。
=head1 COMMAND OPTIONS
COMMAND OPTIONS
=over 4 =item B<-in filename> This specifies the input filename to read data from or standard input if this option is not specified.
-in filename
データを読み込むための入力ファイル名を指定する。このオプションが指定されていない場合、標準入力が利用される。
=item B<-out filename> specifies the output filename to write to or standard output by default.
-out filename
出力ファイル名を指定する。デフォルトは標準出力である。
=item B<-inkey file> the input key file, by default it should be an RSA private key.
-inkey file
入力する鍵ファイル。デフォルトではRSA秘密鍵である。
=item B<-pubin> the input file is an RSA public key.
-pubin
入力ファイルは RSA 公開鍵である。
=item B<-certin> the input is a certificate containing an RSA public key.
-certin
入力は RSA 公開鍵を含む証明書である。
=item B<-sign> sign the input data and output the signed result. This requires and RSA private key.
-sign
入力データに署名し、署名結果を出力する。これは RSA 秘密鍵が必要である。
=item B<-verify> verify the input data and output the recovered data.
-verify
入力データを検証し、復元されたデータを出力する。
=item B<-encrypt> encrypt the input data using an RSA public key.
-encrypt
RSA 公開鍵を利用して入力データを暗号化する。
=item B<-decrypt> decrypt the input data using an RSA private key.
-decrypt
RSA 秘密鍵を利用して入力データを復号化する。
=item B<-pkcs, -oaep, -ssl, -raw> the padding to use: PKCS#1 v1.5 (the default), PKCS#1 OAEP, special padding used in SSL v2 backwards compatible handshakes, or no padding, respectively. For signatures, only B<-pkcs> and B<-raw> can be used.
-pkcs, -oaep, -ssl, -raw
利用するパディング。: それぞれ、PKCS#1 v1.5 (デフォルト)、PKCS#1 OAEP、SSL v2 互換ハンドシェイクを利用した特殊なパディング、あるいはパディング無しを示す。署名の際には、 -pkcs あるいは -raw のみが利用可能である。
=item B<-hexdump> hex dump the output data.
-hexdump
16進ダンプでデータを出力する。
=item B<-asn1parse> asn1parse the output data, this is useful when combined with the B<-verify> option.
-asn1parse
出力データを ASN.1 でパースする。これは、 -verify オプションと組み合わせた際に有効である。
=back =head1 NOTES
NOTES
B<rsautl> because it uses the RSA algorithm directly can only be used to sign or verify small pieces of data.
rsautl は RSA アルゴリズムを直接利用しているため、小さなデータを署名、あるいは検証する場合にしか利用できない。
=head1 EXAMPLES
EXAMPLES
Sign some data using a private key: openssl rsautl -sign -in file -inkey key.pem -out sig
秘密鍵を利用してあるデータに署名する:
openssl rsautl -sign -in file -inkey key.pem -out sig
Recover the signed data openssl rsautl -verify -in sig -inkey key.pem
署名したデータを復元する。
openssl rsautl -verify -in sig -inkey key.pem
Examine the raw signed data:
パディングされていない署名されたデータを検証する。
openssl rsautl -verify -in file -inkey key.pem -raw -hexdump 0000 - 00 01 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0010 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0020 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0030 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0040 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0050 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0060 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0070 - ff ff ff ff 00 68 65 6c-6c 6f 20 77 6f 72 6c 64 .....hello world
The PKCS#1 block formatting is evident from this. If this was done using encrypt and decrypt the block would have been of type 2 (the second byte) and random padding data visible instead of the 0xff bytes.
PKCS#1 ブロックフォーマットについてはこれを見るとはっきりとわかる。もしもこれが暗号化と複合化を利用しているのであれば、ブロックは タイプ 2 (2バイト) となり、0xff バイトではなくランダムパディングデータが見えるはずである。
It is possible to analyse the signature of certificates using this utility in conjunction with B<asn1parse>. Consider the self signed example in certs/pca-cert.pem . Running B<asn1parse> as follows yields:
asn1parse と同時にこのユーティリティを利用すると、証明書による署名の解析が可能である。certs/pca-cert.pem に自己署名された例があるものとしたとき、asn1parse を実行すると以下のようになる。
openssl asn1parse -in pca-cert.pem 0:d=0 hl=4 l= 742 cons: SEQUENCE 4:d=1 hl=4 l= 591 cons: SEQUENCE 8:d=2 hl=2 l= 3 cons: cont [ 0 ] 10:d=3 hl=2 l= 1 prim: INTEGER :02 13:d=2 hl=2 l= 1 prim: INTEGER :00 16:d=2 hl=2 l= 13 cons: SEQUENCE 18:d=3 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption 29:d=3 hl=2 l= 0 prim: NULL 31:d=2 hl=2 l= 92 cons: SEQUENCE 33:d=3 hl=2 l= 11 cons: SET 35:d=4 hl=2 l= 9 cons: SEQUENCE 37:d=5 hl=2 l= 3 prim: OBJECT :countryName 42:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AU .... 599:d=1 hl=2 l= 13 cons: SEQUENCE 601:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption 612:d=2 hl=2 l= 0 prim: NULL 614:d=1 hl=3 l= 129 prim: BIT STRING
The final BIT STRING contains the actual signature. It can be extracted with: openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614
BIT STRING の最後に実際の署名が含まれている。展開するには以下のコマンドを利用する。:
openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614
The certificate public key can be extracted with: openssl x509 -in test/testx509.pem -pubout -noout >pubkey.pem
証明書の公開鍵の展開は以下のコマンドで可能である。
openssl x509 -in test/testx509.pem -pubout -noout >pubkey.pem
The signature can be analysed with:
署名は以下のコマンドで解析できる。
openssl rsautl -in sig -verify -asn1parse -inkey pubkey.pem -pubin 0:d=0 hl=2 l= 32 cons: SEQUENCE 2:d=1 hl=2 l= 12 cons: SEQUENCE 4:d=2 hl=2 l= 8 prim: OBJECT :md5 14:d=2 hl=2 l= 0 prim: NULL 16:d=1 hl=2 l= 16 prim: OCTET STRING 0000 - f3 46 9e aa 1a 4a 73 c9-37 ea 93 00 48 25 08 b5 .F...Js.7...H%..
This is the parsed version of an ASN1 DigestInfo structure. It can be seen that the digest used was md5. The actual part of the certificate that was signed can be extracted with: openssl asn1parse -in pca-cert.pem -out tbs -noout -strparse 4
これは ASN1 DigestInfo? 構造のパースされたものである。利用されているダイジェストが md5 であることがわかる。署名されている実際の証明書部分は、以下のコマンドで展開できる。
openssl asn1parse -in pca-cert.pem -out tbs -noout -strparse 4
and its digest computed with: openssl md5 -c tbs MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5
そして、計算されたダイジェストは以下のようになる。
openssl md5 -c tbs MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5
which it can be seen agrees with the recovered value above.
これは上でリカバーされた値と一致するように見える。
=head1 SEE ALSO
SEE ALSO
L<dgst(1)|dgst(1)>, L<rsa(1)|rsa(1)>, L<genrsa(1)|genrsa(1)>
キーワード:
参照:[OpenSSL のマニュアルの翻訳]