キーペアを作成

$ 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       ← 秘密鍵
$

キーペアが作成できました。

秘密鍵で暗号化する

秘密鍵で暗号化・復号化してみます。

$ echo 'hoge' | openssl rsautl -encrypt -inkey sshkeygen > encrypted.out
$ openssl rsautl -decrypt -inkey sshkeygen -in encrypted.out
hoge

本来、秘密鍵で暗号化した情報は公開鍵で復号するのですが*1

公開鍵で暗号化する

つぎは公開鍵で暗号化してみます。

$ echo 'hoge' | openssl rsautl -encrypt -pubin -inkey sshkeygen.pub > encrypted.out
unable to load Public Key
$

失敗しました。公開鍵で暗号化するときは -pubinオプションをつけるのですが、それをつけてもエラーになるようです。

*.pubファイルをopenssl形式に変換?して、公開鍵で暗号化する

$ 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でつかえる形式に変換する。

上記で作成した 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 のファイルには公開鍵の情報も含まれてるんですね、、。

関連リンク


*1 秘密鍵のなかに公開鍵の情報も含まれているんでしょうかね。。よくわからない

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-10 (火) 17:00:31 (164d)