#author("2023-08-14T10:48:12+00:00","default:masatomix","masatomix")
#author("2023-08-14T10:48:48+00:00","default:masatomix","masatomix")
#contents

** キーペアを作成 [#afad5a08]
 $ ssh-keygen -t rsa -b 4096 -C "masatomix@ki-no.org" -f sshkeygen
 Generating public/private rsa key pair.
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in sshkeygen.
 Your public key has been saved in sshkeygen.pub.
 The key fingerprint is:
 08:14:ad:fc:50:e5:d4:b3:ee:d3:9d:fa:10:2f:81:ab masatomix@ki-no.org

 $ ls -lrt
 -rw-r--r-- 1 ec2-user ec2-user  745  9月  5 07:40 sshkeygen.pub   ← 公開鍵
 -rw------- 1 ec2-user ec2-user 3247  9月  5 07:40 sshkeygen       ← 秘密鍵
 $
キーペアが作成できました。

**秘密鍵で暗号化する [#z1a2c1be]
秘密鍵で暗号化・復号化してみます。
 $ echo 'hoge' | openssl rsautl -encrypt -inkey sshkeygen > encrypted.out
 $ openssl rsautl -decrypt -inkey sshkeygen -in encrypted.out
 hoge
本来、秘密鍵で暗号化した情報は公開鍵で復号するのですが((秘密鍵のなかに公開鍵の情報も含まれているんでしょうかね。。よくわからない))。

**公開鍵で暗号化する [#gca8570e]
つぎは公開鍵で暗号化してみます。
 $ echo 'hoge' | openssl rsautl -encrypt -pubin -inkey sshkeygen.pub > encrypted.out
 unable to load Public Key
 $
失敗しました。公開鍵で暗号化するときは -pubinオプションをつけるのですが、それをつけてもエラーになるようです。 

** *.pubファイルをopenssl形式に変換?して、公開鍵で暗号化する [#yec397b7]
 $ ssh-keygen -e -m PKCS8 -f sshkeygen.pub  > sshkeygen.pub.pem
 $ echo 'hoge' | openssl rsautl -encrypt -pubin -inkey sshkeygen.pub.pem  > encrypted.out

今度は公開鍵で暗号化出来ました。
 $ openssl rsautl -decrypt -inkey sshkeygen -in encrypted.out
 hoge

秘密鍵で復号も出来ました。うまくいきましたね。

**ターミナルで作成した鍵を、Javaでつかえる形式に変換する。 [#y8044414]

上記で作成した sshkeygen/sshkeygen.pub について。
 $ openssl rsa -pubout  -in sshkeygen -out public.der -outform DER     ←公開鍵
 $ openssl pkcs8 -topk8 -nocrypt  -in sshkeygen -out private.pk8 -outform DER      ←秘密鍵

これらのファイル private.pk8 / public.der はJavaで読み込むことが可能です。
やっぱり、ssh-keygen のファイルには公開鍵の情報も含まれてるんですね、、。



** pemファイルから公開鍵を取り出す [#ie8ba5f0]
** 秘密鍵ファイルから公開鍵を取り出す [#ie8ba5f0]

 $ ssh-keygen -t rsa -b 4096 -C "masatomix@ki-no.org" -f foobar
 Generating public/private rsa key pair.
 ...
 |        .o +.O*X*|
 +----[SHA256]-----+
 $ ls -lrt
 -rw-r--r--   1 sysmgr sysmgr    745 Aug 14 19:44 foobar.pub
 -rw-------   1 sysmgr sysmgr   3381 Aug 14 19:44 foobar
 
 $ cat foobar.pub 
 ssh-rsa AAAAB3NzaC1yc...sr4pQ14QKdCYhgblanYinTJNNM5bIla64PENgNO4JgRgFOQ== masatomix@ki-no.org

 
 $ ssh-keygen -y -f ./foobar
 ssh-rsa AAAAB3NzaC1yc...sr4pQ14QKdCYhgblanYinTJNNM5bIla64PENgNO4JgRgFOQ== masatomix@ki-no.org 

一致 :-)

**関連リンク [#y6d9a1c2]
-[[OpenSSLを使用してファイルをRSA暗号化する - momoto.github.io>http://momoto.github.io/blog/2012/10/14/rsa-encryption-and-decryption/]]
-[[シェルスクリプトの平文パスワードをセキュアにする方法 - 余白の書きなぐり>http://auewe.hatenablog.com/entry/2014/04/14/213319]]
-[[OpenSSLで作成したRSAの鍵を使ってJavaで暗号化・復号するサンプル - BLOG.IK.AM>https://blog.ik.am/entries/327]]
-[[OpenSSLで生成したRSA鍵をJavaで読み込む - unhurried>http://unhurried.hatenablog.com/entry/openssl_java_rsa_key]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS