コンテンツにスキップ

openssl genpkey

RSAやECなどの 秘密鍵 を生成するコマンド。

秘密鍵には、対応する公開鍵を導出するための情報も含まれている。生成した秘密鍵は、 CSR の作成や 証明書 への署名に使用する。


Terminal window
openssl genpkey \
-algorithm アルゴリズム \
-pkeyopt アルゴリズム固有の設定 \
-out 出力ファイル

-out を省略すると、秘密鍵は標準出力へ PEM形式 で出力される。


Terminal window
openssl genpkey \
-algorithm RSA \
-pkeyopt rsa_keygen_bits:2048 \
-out server.key

RSA・4096ビット・パスフレーズ付き

Section titled “RSA・4096ビット・パスフレーズ付き”
Terminal window
openssl genpkey \
-algorithm RSA \
-aes-256-cbc \
-pkeyopt rsa_keygen_bits:4096 \
-out ca.key

-aes-256-cbc を指定すると、秘密鍵を暗号化するためのパスフレーズを求められる。

Terminal window
openssl genpkey \
-algorithm EC \
-pkeyopt ec_paramgen_curve:P-256 \
-out server.key

ECでは鍵長ではなく曲線を指定する。 P-256 はOpenSSLで使用できるNIST曲線名の一つである。


アルゴリズム別の簡易コマンド

Section titled “アルゴリズム別の簡易コマンド”

openssl genpkey は複数の鍵アルゴリズムを共通した形式で扱える。一方、特定のアルゴリズムだけを生成する、より短いコマンドも用意されている。

RSA秘密鍵だけを作成する場合は、 openssl genrsa を使用すると短く記述できる。

Terminal window
openssl genrsa \
-out server.key \
2048

暗号化する場合:

Terminal window
openssl genrsa \
-aes256 \
-out ca.key \
4096

鍵長は最後の引数に指定する。 openssl genrsa はRSA専用であり、ECやEd25519などの鍵は生成できない。

openssl ecparam の -genkey を使用すると、指定した曲線のEC秘密鍵を生成できる。

Terminal window
openssl ecparam \
-name prime256v1 \
-genkey \
-noout \
-out server.key

openssl ecparam は本来ECパラメータを扱うコマンドである。OpenSSL公式ドキュメントでは、同じ操作に加えて他の公開鍵アルゴリズムも扱えるコマンドとして openssl genpkey が案内されている。


生成する公開鍵暗号アルゴリズムを指定する。

Terminal window
-algorithm RSA

代表例:

値 用途
RSA RSA秘密鍵
EC 楕円曲線暗号の秘密鍵
ED25519 Ed25519署名鍵
X25519 X25519鍵共有用の鍵

-algorithm は、そのアルゴリズムに対する -pkeyopt より前に指定する。

出力する秘密鍵をAES-256-CBCで暗号化する。

Terminal window
-aes-256-cbc

秘密鍵を使用するたびにパスフレーズの入力が必要になる。自動起動するTLSサーバーなどでは、運用方法を考慮して暗号化の有無を決める。

選択したアルゴリズム固有の設定を 名前:値 の形式で指定する。

Terminal window
-pkeyopt rsa_keygen_bits:4096

RSAでよく使う設定:

設定 意味
rsa_keygen_bits:2048 RSA鍵長を2048ビットにする
rsa_keygen_bits:4096 RSA鍵長を4096ビットにする
ec_paramgen_curve:P-256 EC鍵で使用する曲線をP-256にする

RSAの鍵長は、指定しなければ2048ビットになる。

生成した秘密鍵の出力先を指定する。

Terminal window
-out ca.key

生成した秘密鍵は openssl pkey で読み込みと内部整合性を確認できる。

Terminal window
openssl pkey -in ca.key -check -noout

期待する結果: Key is valid


  • 秘密鍵は公開しない。
  • 秘密鍵ファイルの所有者とパーミッションを制限する。
  • 秘密鍵を失うと、その鍵に対応する証明書を継続して使用できない。
  • CA秘密鍵 が漏えいすると、そのCAが発行した証明書の信頼性が失われる。


  • openssl-genpkey 秘密鍵の生成、対応アルゴリズム、アルゴリズム固有オプション。

  • openssl-pkey 秘密鍵・公開鍵の表示、変換、整合性確認。

  • openssl-genrsa RSA秘密鍵に特化した生成コマンド。

  • openssl-ecparam ECパラメータの操作と、EC秘密鍵の生成。