OpenSSLにて容量の大きいbinaryファイルを暗号化

OpenSSLで容量の大きいファイルを暗号化したらエラー

OpenSSLコマンドでサイズの大きいファイルを暗号化しようとすると、
何やらエラーがでて暗号化ができませんでした。

// 600Mほどのzipファイルを暗号化しようとしたら
$ openssl rsautl -encrypt -pubin -inkey open_key.pem -in secret.zip -out secret.zip.crypt
RSA operation error
140735108559712:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:rsa_pk1.c:151:

容量が大きくなるとデータがでかすぎるとか言われて処理できませんでした。
しばらくググると同じ問題でこうすればいいじゃないと書かれた記事が見つかりました。


http://ashmek.weebly.com/1/post/2011/02/encrypt-large-files-with-a-public-key-via-openssl.html

なにやらSMIMEを使えとのこと。

共通鍵と秘密鍵を生成

$ openssl req -x509 -nodes -newkey rsa:2048 -keyout private_ssl_key.pem -out public_key.pem -subj '/'

暗号化

$ openssl smime -encrypt -aes256 -in secret.zip -binary -outform DEM -out secret.zip.crypt public_key.pem

復号化

$ openssl smime -decrypt -in secret.zip.crypt -binary -inform DEM -inkey private_ssl_key.pem -out decrypt.zip