相手のssh公開鍵を使って便利に暗号化する方法

2015-04-20

普段、社外とやり取りしないので、どれがメインストリームなのかわからないけど、
相手の人もエンジニアっぽかったから、とりあえず公開鍵もらって、暗号化することにした。

送られてきたのはGPG公開鍵ではなくssh公開鍵だったので、調べながらやってみた。

OpenSSHで作った公開鍵をOpenSSLで扱えるようにするのにハマったけど、
手順は簡単だったのでメモっとく。

1. Opensslでも扱えるPKCS#8形式にssh公開鍵を変換する

ssh-keygen -f <ssh公開鍵> -e -m PKCS8 > hoge

ssh公開鍵のフォーマットはこんな感じ

ssh-rsa AAAAB3NzaC1yc2EAaAADAQABAAABAQDvi3d/Y7oXGqS72okWF/EVYotL/SGkVk7tngCBkEDh3BznfU7XURi5p/uf7Hvzy1IWqJyne5umEyvMR6svPs0+kIQpcClpPvyz5KFWgSCJIA3dsYI4sQNTfJfSEaDBUyVNCjcWmpuvwbnRdTv7QVBZKp8Rgc7bk+8x40aD2GtUZ1YsuqpnI4nsxyCuoPc+jH1trMIDettUPCK8evMsJPvBJkIVULEJWik/qgjjFsGtAzJJyFFy3meXN9u4uPYYKKVgH2hM705QS/ucNULhp2Ey1tOcqYgfnTVJj320up0s9acsljJv6cQK60dzVC9XhN5ECabGQhgfKKCozaGm/hWB

変換後のやつ
BEGIN PUBLIC KEYという文言に注意する(PEM形式とは違う)

-----BEGIN PUBLIC KEY-----
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufaHOGEfugaHOGE
HOGEfugaHOGEfufaHOGEfugaHOGEfufa==
-----END PUBLIC KEY-----

2. 暗号化

さっき作った鍵をつかってopensslコマンドで暗号化
-pubinというオプションをしていて公開鍵で暗号化することを明示してあげる

openssl rsautl -encrypt -pubin -inkey hoge -in fuga.csv -out fuga.csv.encrypted

以上

復号化は下のコマンドでできる

openssl rsautl -decrypt -inkey private_key -in fuga.csv.encrypted -out fuga.csv.decrypted

小技:https://github.com/<username>.keysから相手の公開鍵拾えるし便利

#GitHub  #SSH