2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OpenSSLで秘密鍵と自己証明書を用いた暗号化/復号化やってみた

Last updated at Posted at 2022-02-20

全体の流れ

1.用語の説明
2.暗号化方法
3.復号化方法
4.参考文献

といった流れで進めていきます。

用語の説明

OpenSSLとは

OpenSSLとは、インターネット上で標準的に利用される暗号通信プロトコルであるSSLおよびTLSの機能を実装したプログラムの一つ。他のソフト> ウェアに組み込んで使用するライブラリであり、オープンソースソフトウェアとして公開されている。

色々書いてますが、暗号化する仕組みであるSSL/TLS等を使うことが出来る便利なライブラリだということだと私は理解しました。

詳しい情報はSSLとTLSの違いとは | さくらのSSLを参照ください。

S/MIME

S/MIME(エスマイム)とは、メールのセキュリティを高めるための暗号化技術のひとつです。
OutlookやiPhoneのメールアプリなど多くのメールソフトに対応しており、現在では広く普及している標準規格となっています。

こちらもメール等に使われる暗号化技術であると理解しました。

S/MIMEの仕組みを図解で分かりやすく説明で説明されているので、詳しく知りたい方は是非。

####証明書署名要求
認証局へ証明書の発行を請求する際に送るメッセージのこと。

###自己署名証明書
自分の持つ秘密鍵によって署名した証明書。

暗号化方法

##暗号化イメージ

1. 秘密鍵をコマンドで作成し、証明書署名要求作成の際に紐づける
OpenSSL (5).jpg
2. 1.で作成した証明書署名要求を自分で署名し、秘密鍵を使い自己署名証明書を作成
OpenSSL (11).jpg

3. 暗号化したいファイルに自己署名証明書を紐づけ、暗号化する
OpenSSL (14).jpg

##暗号化に必要なもの

  • 暗号化したいファイル
  • 秘密鍵
  • 証明書署名要求
  • 自己署名証明書

##やり方、実際のコマンド(つまづいたところ)
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

復号化方法

復号化イメージ

OpenSSL (15).jpg

###復号化

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で開く

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?