さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

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

f:id:y_saiki:20171025000902j:plain

目次

1.インストール

 
「Win32 OpenSSL v1.1.0d Light」をダウンロード
 

2.今回生成する鍵のアルゴリズム簡易説明

2-1.【RSASSA-PKCS1-v1_5 using SHA-256(RS256)】

RS256は非対称アルゴリズムであり、公開鍵/秘密鍵のペアを使用する。
 

2-2.【HMAC using SHA-256(HS256)】

  • 対称アルゴリズムであり、2つの当事者間で共有される1つの(秘密)鍵のみを使用する。
  • ハッシュ計算対象の文字列を秘密鍵として、暗号化時と複合化時にソルトとして使用する。
  • 鍵ファイル生成などの必要はなし。
  • 互いに参照できる場所に秘密鍵を持たせる必要がある。
 

2-3.【ECDSA using P-256 and SHA-256(ES256)】

楕円曲線暗号と呼ばれるもの。

詳しいところは答えられないため、本記事では鍵の生成方法のみとし概要は割愛する。

 

3.鍵生成コマンド

3-1.【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
  

3-2.【HMAC using SHA-256(HS256)】

鍵の生成は不要のため、説明なし
 

3-3.【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
 
以上