さっしーの技術関連備忘録

技術的な内容を忘れないようにメモ....

OpenSSLでJavaで扱える鍵を生成をしてみる

 
1.インストー

OpenSSLインストー
「Win32 OpenSSL v1.1.0d Light」をダウンロード
 
 
2.今回生成する鍵のアルゴリズム簡易説明

①【RSASSA-PKCS1-v1_5 using SHA-256(RS256)】
  ※RS256は非対称アルゴリズムであり、公開鍵/秘密鍵のペアを使用する。
 
②【HMAC using SHA-256(HS256)】
  ※対称アルゴリズムであり、2つの当事者間で共有される1つの(秘密)鍵のみを使用する。
  ハッシュ計算対象の文字列を秘密鍵として、暗号化時と複合化時にソルトとして使用する。
 
  鍵ファイル生成などの必要はなし。
  互いに参照できる場所に秘密鍵を持たせる必要がある。
 
③【ECDSA using P-256 and SHA-256(ES256)】
 
 
 
3.鍵生成コマンド

【RSASSA-PKCS1-v1_5 using SHA-256(RS256)】
 
実行コマンド
秘密鍵と公開鍵を生成する
[秘密鍵]openssl genrsa -out rs256.key 2048
[公開鍵]openssl rsa -pubout < rs256.key > rs256.pub.key
 
上記生成した秘密鍵をpkcs8へ変換する
openssl pkcs8 -in rs256.key -out rs256.key.pkcs8 -topk8 -nocrypt
 
 
【HMAC using SHA-256(HS256)】
鍵の生成は不要のため、説明なし
 
 
【ECDSA using P-256 and SHA-256(ES256)】
 
実行コマンド
鍵ペアを生成する
openssl ecparam -genkey -name prime256v1 -noout -out es256-key-pair.key
 
鍵ペアから公開鍵と秘密鍵を生成する
[公開鍵]openssl ec -in es256-key-pair.key -outform PEM -pubout -out es256.pub.key
[秘密鍵]openssl ec -in es256-key-pair.key -outform PEM -out es256.key
 
秘密鍵をpkcs8形式に変換する
openssl pkcs8 -in es256.key -out es256.key.pkcs8 -topk8 -nocrypt