全体の流れ
1.用語の説明
2.暗号化方法
3.復号化方法
4.参考文献
といった流れで進めていきます。
用語の説明
OpenSSLとは
OpenSSLとは、インターネット上で標準的に利用される暗号通信プロトコルであるSSLおよびTLSの機能を実装したプログラムの一つ。他のソフト> ウェアに組み込んで使用するライブラリであり、オープンソースソフトウェアとして公開されている。
色々書いてますが、暗号化する仕組みであるSSL/TLS等を使うことが出来る便利なライブラリだということだと私は理解しました。
詳しい情報はSSLとTLSの違いとは | さくらのSSLを参照ください。
S/MIME
S/MIME(エスマイム)とは、メールのセキュリティを高めるための暗号化技術のひとつです。
OutlookやiPhoneのメールアプリなど多くのメールソフトに対応しており、現在では広く普及している標準規格となっています。
こちらもメール等に使われる暗号化技術であると理解しました。
S/MIMEの仕組みを図解で分かりやすく説明で説明されているので、詳しく知りたい方は是非。
####証明書署名要求
認証局へ証明書の発行を請求する際に送るメッセージのこと。
###自己署名証明書
自分の持つ秘密鍵によって署名した証明書。
暗号化方法
##暗号化イメージ
1. 秘密鍵をコマンドで作成し、証明書署名要求作成の際に紐づける
2. 1.で作成した証明書署名要求を自分で署名し、秘密鍵を使い自己署名証明書を作成
3. 暗号化したいファイルに自己署名証明書を紐づけ、暗号化する
##暗号化に必要なもの
- 暗号化したいファイル
- 秘密鍵
- 証明書署名要求
- 自己署名証明書
##やり方、実際のコマンド(つまづいたところ)
OpenSSLコマンドで秘密鍵を作成するためにopenssl genrsa
コマンドを使用した
###秘密鍵の作成
秘密鍵とは
・・・相手に渡したり一般公開せず、自分だけが持っている鍵
コマンド例
openssl genrsa [-aes256] {ビット数} > {出力したい秘密鍵の名前}
-aes256
を使うことにより作成する鍵にパスフレーズをつけることができる。(今回は使用しない)
ビット数は2024bit以上が推奨されているため、下記のコマンドで作成する
実際に使用したコマンド
openssl genrsa 2024 > private_key.pem
###証明書署名要求の作成
証明書署名要求とは
・・・認証局へ送るメッセージのこと
コマンド例
openssl req -new -key {作成した秘密鍵名} > {出力したい証明書署名要求名}
実際に使用したコマンド
openssl req -new -key private_key.pem > certificate.csr
###自己署名証明書の作成
コマンド例
openssl x509 -req -days {有効日数} -signkey {作成した秘密鍵名} < {証明書署名要求名} > {出力したい証明書名}
有効期限を10年間に設定
実際に使用したコマンド
openssl x509 -req -days 3650 -signkey private_key.pem < certificate.csr > server.crt
暗号化
コマンド例
openssl smime -encrypt -in {暗号化したいファイル}
[-out {暗号化出力ファイル名}]
[-outform (smime or pem or der)]
{受信者の証明書ファイル(PEM)}
-outform
オプションを付けることにより暗号化した際のフォーマットが変更する
実際に使用したコマンド
openssl smime -encrypt -in datafile.txt -out datafile_encrypted.txt -outform pem server.crt
復号化方法
復号化イメージ
###復号化
1. 秘密鍵を使い復号化する
コマンド例
openssl smime -decrypt -in {暗号化ファイル}
[-inform (smime or pem or der)]
-inkey {受信者の秘密鍵ファイル(PEM形式)}
[-out {復号したデータ出力先}]
暗号化の際に-outform
オプションを付けた場合は-inform
オプションを使用する
実際に使用したコマンド
openssl smime -decrypt -in datafile_encrypted.txt -inform pem -inkey private_key.pem -out datafile_decrypted.txt
参考文献
OpenSSL で RSA の秘密鍵を作成する方法
OpenSSLとは - IT用語辞典 e-Words
メールのセキュリティ対策「S/MIME」とは?証明書の仕組みもご紹介
S/MIMEメールのsmime.p7mをOpenSSLで開く