アーカイブ: 2010年6月04日

S/MIMEによるメール暗号化

パーマリンク 2010/06/04 23:59:00 著者: kumaold メール
カテゴリ: プログラミング, PHP

超久々にまともなPHP技術ネタでお送りします。


さて、とある案件を片付けるのに個人情報などを扱うため、データ添付メールを暗号化して送信する必要が出てきました。

ただのファイル暗号化なら割と簡単ですが、今回はS/MIMEによる公開鍵暗号で受信者を限定とすることで強固なセキュリティが確保できます。


そこでまず必要になるのが公開鍵証明書です。
本来ならベリサインなどの信頼あるCAによる署名がなされたものの方ががいいですが、無料で取得できるのもいくつかあります。

たとえば、こちらCOMODO社の Free Secure Email Certificates など。

申請フォームから必要事項を記入後にメールが送られてきます。
メール記載のURLにアクセスし、確認のメッセージで許可するとブラウザに個人用証明書がインストールされます。

証明書の確認方法は、Firefox では「ツール」→「オプション」→「詳細」→「暗号化」→「証明書を表示」→「あなたの証明書」→「表示」でこうなればOK。

見てのとおり有効期限は1年間のため、都度更新が必要です。

この「詳細」タブにある「エクスポート」で暗号化に必要な公開鍵証明書のみを抽出保存しておきます。保存形式は X.509証明書(*.PEM) です。

IEや他社メーラなど他のソフトでも使用できるよう、証明書一覧の「バックアップ」より一旦秘密鍵を含むPKSC12ファイル(*.p12)に一緒に出力しておきましょう。


X.509証明書の方はメール送信者に配布し、証明書に記載のメールアドレス宛に送るメールの暗号化に使用されます。

PKSC12ファイルはさらに秘密鍵を含むファイルで、メールの復号化に使用されるため厳重に管理する必要があります。メール受信PCにインストールします。


先ほどエクスポートしたPKSC12ファイルをIEにインポートすることで、Outlook Express では自動的に暗号化メールが送信できます。

メールの新規作成画面で右上にある「暗号化」ボタンを押すだけで、そのメールの内容は暗号化して送信されます。

暗号化メールを受信するとこのようにその旨のメッセージが表示されます。


ちなみに秘密鍵を保持していない人が受信するとこうなります。
ソースを見るとヘッダ文字列以外はすべて暗号化されてまったく見えません。


ということで、これがS/MIMEによるメール暗号化の概要です。
ここまでは実践されている方も多く、いろいろと参考にさせていただきました。

これをPHPでやってみようというのが今回の本題です。
詳しいことは次回の投稿で。

4883731669インターネット暗号化技術―PKI、RSA、SSL、S/MIME、etc.
ソフトリサーチセンター 2002-05
売り上げランキング : 540463
おすすめ平均

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2010年6月
 << < 現在> >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

検索

XMLフィード

16ブログ     powered by b2evolution