サイズ: 2497
コメント:
|
サイズ: 3289
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 45: | 行 45: |
== 秘密鍵の暗号化について == 実運用で必要だと思ったことは無いが、世の中には秘密鍵を暗号化しないといけないユースケースがあるようで、その場合の指定方法について調査した。 * 結論から言えば、RSAでのみ指定できる。ECDSAでは指定できない。 * 指定できる暗号化アルゴリズムも数が限られている。 * 具体的には「{{{openssl enc --help}}(オプションは存在しないものを指定)を実行して「Valid ciphername values:」行より後に出る一覧が指定できる。 * 厳密には更にカウンタ系(CNT、GCM、XTS)や特殊なところで {{{-chacha}}}, {{{-rc4-hmac-md5}}} は指定できない。 |
openssl genpkey
- 各種公開鍵暗号アルゴリズム(RSA、ECDSA等)の秘密鍵を生成するためのコマンド。
- 通常、CSR作成する程度であれば、秘密鍵をわざわざ分けて作る必要は無い、と考えてるけど、それでも分けて実行したい場合に使用する。
もうそろそろ openssl genrsa コマンド使うの止めよう:-)。
RSA公開鍵暗号の秘密鍵の作り方
openssl genpkey -algorithm RSA -out 秘密鍵ファイル名.pem -pkeyopt rsa_keygen_bits:ビット数 chmod 0400 秘密鍵ファイル名.pem
-pkeyout rsa_keygen_bits: を指定しない場合、通常(今時?)2048ビットと解釈される。 指定可能なビット数は256から1073741696(0x3fffff80)まで可能(openssl のバージョンによる)。
なおマニュアル読むと -pkeyopt rsa_keygen_pubexp:3 と「冪指数」に「3」を指定している例が記載されているが、 実用的にはデフォルトの65537(0x10001)で十分だし、(素数である必要があるにしても)他を指定する意味は無い(処理速度的にも)。
ECDSA公開鍵暗号の秘密鍵の作り方
openssl genpkey -algorithm EC -out 秘密鍵ファイル名.pem -pkeyopt ec_paramgen_curve:ECパラメータ名 -pkeyopt ec_param_enc:named_curve chmod 0400 秘密鍵ファイル名.pem
または
openssl genpkey -paramfile <(openssl ecparam -name ECパラメータ名) -out 秘密鍵ファイル名.pem chmod 0400 秘密鍵ファイル名.pem
※<(command)というイディオム(実行結果をテンポラリファイル名で渡してくれる)は zsh/bash 拡張なので、シェルスクリプト(sh/ash/ksh)中では使わないこと。
「ECパラメータ名」はいわゆる「prime256v1」「secp384r1」「secp521r1」と言った 「楕円曲線」を示す。具体的には下記コマンドを実行することで、使用できる「楕円曲線」を選べる。
openssl ecparam -list_curves
ただし、他の環境でも使えるかどうかは別の話なので、先に示したメジャーな「楕円曲線」を推奨する。
秘密鍵の暗号化について
実運用で必要だと思ったことは無いが、世の中には秘密鍵を暗号化しないといけないユースケースがあるようで、その場合の指定方法について調査した。
- 結論から言えば、RSAでのみ指定できる。ECDSAでは指定できない。
- 指定できる暗号化アルゴリズムも数が限られている。
具体的には「(オプションは存在しないものを指定)を実行して「Valid ciphername values:」行より後に出る一覧が指定できる。
厳密には更にカウンタ系(CNT、GCM、XTS)や特殊なところで -chacha, -rc4-hmac-md5 は指定できない。