openssl genpkey
RSAやECなどの 秘密鍵 を生成するコマンド。
秘密鍵には、対応する公開鍵を導出するための情報も含まれている。生成した秘密鍵は、 CSR の作成や 証明書 への署名に使用する。
openssl genpkey \ -algorithm アルゴリズム \ -pkeyopt アルゴリズム固有の設定 \ -out 出力ファイル-out を省略すると、秘密鍵は標準出力へ PEM形式 で出力される。
秘密鍵の作成例
Section titled “秘密鍵の作成例”RSA・2048ビット
Section titled “RSA・2048ビット”openssl genpkey \ -algorithm RSA \ -pkeyopt rsa_keygen_bits:2048 \ -out server.keyRSA・4096ビット・パスフレーズ付き
Section titled “RSA・4096ビット・パスフレーズ付き”openssl genpkey \ -algorithm RSA \ -aes-256-cbc \ -pkeyopt rsa_keygen_bits:4096 \ -out ca.key-aes-256-cbc を指定すると、秘密鍵を暗号化するためのパスフレーズを求められる。
openssl genpkey \ -algorithm EC \ -pkeyopt ec_paramgen_curve:P-256 \ -out server.keyECでは鍵長ではなく曲線を指定する。 P-256 はOpenSSLで使用できるNIST曲線名の一つである。
アルゴリズム別の簡易コマンド
Section titled “アルゴリズム別の簡易コマンド”openssl genpkey は複数の鍵アルゴリズムを共通した形式で扱える。一方、特定のアルゴリズムだけを生成する、より短いコマンドも用意されている。
openssl genrsa
Section titled “openssl genrsa”RSA秘密鍵だけを作成する場合は、 openssl genrsa を使用すると短く記述できる。
openssl genrsa \ -out server.key \ 2048暗号化する場合:
openssl genrsa \ -aes256 \ -out ca.key \ 4096鍵長は最後の引数に指定する。 openssl genrsa はRSA専用であり、ECやEd25519などの鍵は生成できない。
openssl ecparam
Section titled “openssl ecparam”openssl ecparam の -genkey を使用すると、指定した曲線のEC秘密鍵を生成できる。
openssl ecparam \ -name prime256v1 \ -genkey \ -noout \ -out server.keyopenssl ecparam は本来ECパラメータを扱うコマンドである。OpenSSL公式ドキュメントでは、同じ操作に加えて他の公開鍵アルゴリズムも扱えるコマンドとして openssl genpkey が案内されている。
よく使うオプション
Section titled “よく使うオプション”-algorithm
Section titled “-algorithm”生成する公開鍵暗号アルゴリズムを指定する。
-algorithm RSA代表例:
| 値 | 用途 |
|---|---|
RSA |
RSA秘密鍵 |
EC |
楕円曲線暗号の秘密鍵 |
ED25519 |
Ed25519署名鍵 |
X25519 |
X25519鍵共有用の鍵 |
-algorithm は、そのアルゴリズムに対する -pkeyopt より前に指定する。
-aes-256-cbc
Section titled “-aes-256-cbc”出力する秘密鍵をAES-256-CBCで暗号化する。
-aes-256-cbc秘密鍵を使用するたびにパスフレーズの入力が必要になる。自動起動するTLSサーバーなどでは、運用方法を考慮して暗号化の有無を決める。
-pkeyopt
Section titled “-pkeyopt”選択したアルゴリズム固有の設定を 名前:値 の形式で指定する。
-pkeyopt rsa_keygen_bits:4096RSAでよく使う設定:
| 設定 | 意味 |
|---|---|
rsa_keygen_bits:2048 |
RSA鍵長を2048ビットにする |
rsa_keygen_bits:4096 |
RSA鍵長を4096ビットにする |
ec_paramgen_curve:P-256 |
EC鍵で使用する曲線をP-256にする |
RSAの鍵長は、指定しなければ2048ビットになる。
生成した秘密鍵の出力先を指定する。
-out ca.key生成した秘密鍵は openssl pkey で読み込みと内部整合性を確認できる。
openssl pkey -in ca.key -check -noout期待する結果:
Key is valid
- 秘密鍵は公開しない。
- 秘密鍵ファイルの所有者とパーミッションを制限する。
- 秘密鍵を失うと、その鍵に対応する証明書を継続して使用できない。
- CA秘密鍵 が漏えいすると、そのCAが発行した証明書の信頼性が失われる。
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”-
openssl-genpkey 秘密鍵の生成、対応アルゴリズム、アルゴリズム固有オプション。
-
openssl-pkey 秘密鍵・公開鍵の表示、変換、整合性確認。
-
openssl-genrsa RSA秘密鍵に特化した生成コマンド。
-
openssl-ecparam ECパラメータの操作と、EC秘密鍵の生成。