S/MIME を使ったメール暗号化方法のメモ

SSL を使ったお問い合わせフォームでも、フォームに入力された内容をメールで送信してしまえば、平文でネットワークを流れてしまいます。

しかし、S/MIME という方法を使えば、クライアントのメールソフトで復号化するので安心です。

証明書を作成する
———————————————————————-

証明書を作成するには次のような方法があり、どちらも無料で利用できます。

– OpenSSL を使う。
– [Instant SSL](http://www.instantssl.com/) など無料の証明書発行サービスを使う。

PHP で暗号化して送信する
———————————————————————-

送信側は、[ openssl_pkcs7_encrypt ] という PHP 関数を使って S/MIME メッセージを暗号化して送信する。
暗号化には、[ *.cer ] という拡張子で、テキスト形式の公開鍵を使います。

公開鍵で暗号化して、秘密鍵で復号化します。

拡張子とファイルの種類
———————————————————————-

.cer
: X.509 証明書 + 公開鍵

.crt
: X.509 証明書 + 公開鍵
: 公開鍵をテキスト ( PEM ) 形式に変換したもの

.p7b ( PKCS#7 )
: X.509 証明書 + 公開鍵

.p12 .pfx ( PKCS#12 )
: X.509 証明書 + 公開鍵 + 秘密鍵
: .p7b と秘密鍵を結合したものが .p12 になる。

.pem
: 解凍するための秘密鍵

ファイルの変換方法
———————————————————————-

.p12 から .cer への変換は、次のコマンドで行えます。

openssl pkcs12 -in hoge.p12 -clcerts -nokeys -out fuga.cer

.p7b から .cer への変換は、次のページが参考になります。

Thunderbird へ *.p12 証明書をインポートする
———————————————————————-

受信側は、Outlook Express などの一般的なメーラーで復号化できます。
今回は、Thunderbird 15.0.1 を使いました。

smime-01

▲ メニューから、[ ツール ] → [ オプション ] → [ 証明書 ] → [ 証明書を表示 ] をクリック。

smime-02

▲ [ あなたの証明書 ] タブで [ インポート ] をクリックし、拡張子が [ *.p12 ] か [ *.pfx ] のファイルを選択。

smime-03

▲ パスワードを入力。

smime-04

▲ 証明書と秘密鍵の復元完了。

Thunderbird へ *.pem 証明書をインポートする
———————————————————————-

上記のタブ画面の時、[ 認証局証明書 ] タブで [ インポート ] をクリックし、拡張子が [ *.pem ] のファイルを選択。

参考にさせてもらったページ
———————————————————————-

– [S/MIME の電子メール暗号化/署名の環境を作る (Thunderbird と iOS Mail) – Haya’s Note](http://d.hatena.ne.jp/eikihaya/20130621/SMIME)
– [S/MIME で メールを暗号化 する « INSANEWORKS,LLC](http://www.insaneworks.co.jp/kota/smime%E3%81%A7%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E6%9A%97%E5%8F%B7%E5%8C%96%E3%81%99%E3%82%8B)
– [S/MIME(Secure MIME)で電子メールを交換する個人証明書作成を試す](http://takaq1.plala.jp/freebsd/smime/)
– [SSL/TLS 証明書FAQ](http://akisoftware.com/pmsrv/help/pkcs.html)
– [OpenSSL使用例 Thunderbirdの暗号と署名](http://manabu.quu.cc/up/7/e72027.htm)

ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です