目次
暗号化メールのやり方として,前回はOpenPGPを検討していたのですが, 今度はS/MIMEのほうを検討してみました.結論から言えば,ソフトウェアのサポート状況は やはりOpenPGPよりもS/MIMEのほうがこなれている感じですね.仕事に使うならこちらの方が よいかも知れません.
S/MIMEの場合,証明書(公開鍵)の信頼性はPKIによって保証されるので,鍵の取り回しは PGPに比べれば少し楽です.PGPのWeb of Trustの場合も「誰かを絶対的に信頼する」という仕組みは PKIと変わりませんが,信頼性の確認は自分で行う必要がある──言ってしまえば,通信する相手,あるいは 信頼する相手の鍵は直接会って交換するするしかないので,この部分をPKIに頼ることが できるというのは大きな利点です.
ただし,S/MIMEの場合は証明書の取得そのものが最大の壁です. 今回はStartSSLでメール用のクライアント証明書を取得して設定してみたので,そのあたりのことをメモしておきます (自分用のメモなのでところどころ端折ってます).
StartSSLでのS/MIMEクライアント証明書の取り方
ログインすれば操作はそれほど難しくないので省略します.
基本的流れだけ書いておくと,
- 発行対象のメールアドレスの検証
- 証明書の発行
Certificates Wizard
でClient S/MIME and Authentication Certificate
を選択してContinueする.- 発行対象のメールアドレスを入力する.
- キーペアを作成して,証明書署名要求(csr)を作成する.ウェブブラウザで作成する方法と,ツールを使う方法の
2つがあるが,opensslを使用する場合は,ページにも書いてあるが以下のようにする(
yourname
は適当に置き換える).
openssl req -newkey rsa:2048 -keyout yourname.key -out yourname.csr
yourname.csr
が生成されるのでこの中身をページ内のフォームに貼り付けてSubmitする.- openssl.confの
nsCertType
をclient,email
にしておく必要がありそうだけどなくても大丈夫かも知れない.
- openssl.confの
- 以上で証明書が発行される.次のページで
(メールアドレス).zip
の様なファイルがダウンロードできる. この中身は以下の通り(具体的なファイル名などは随時変わると思う).1_Intermediate.crt
: StartSSLの中間証明書2_(メールアドレス).crt
: S/MIMEクライアント証明書
ちなみに,StartSSLで発行した証明書を失効させるにはお金がかかったります(1000円くらい).
取得した証明書を変換する
StartSSLから取得した証明書はX509形式だが,これらはそのまま使えないので以下のようにする.
秘密鍵の変換
署名住みの公開鍵(先ほどの2_(メールアドレス).crt
)と,秘密鍵(yourname.key
),そしてStartSSLの中間証明書(1_Intermediate.crt
)
をまとめたPKCS12形式のファイルを作る.

opensslコマンドで以下のようにする.秘密鍵のパスフレーズの入力とエクスポート用のパスフレーズの設定を要求される.
cat 2_(メールアドレス).crt 1_Intermediate.crt > tmp.crt openssl pkcs12 -export -in tmp.crt -inkey yourname.key -out personal.p12
これで作成されたpersonal.p12
を安全な手段でWindowsなどに持ってきてインポートする.
証明書(署名付き公開鍵)の変換
署名住みの公開鍵(先ほどの2_(メールアドレス).crt
)はX509形式で,そのまま使えるメーラー(Thunderbirdなど)もあるが
Outlookなどでは使えないので以下のようにPKCS7形式に変換しておく.
openssl crl2pkcs7 -nocrl -certfile 2_(メールアドレス).crt -certfile -outform DER -out pubkey.cer
これで作成されたpubkey.cer
を,自分に暗号化メールを送りたい人に渡しておく.
送信者側のメーラーで,この証明書とメールアドレスを関連づければ,暗号文を送ることができるようになる.
メーラーの設定
Thunderbird
オプション→「詳細」→「証明書」タブの「証明書を表示」で,「証明書マネージャ」を表示させる.

「あなたの証明書」に先ほどのpersonal.p12
を,個人証明書に受信者の証明書をインポートすれば良い.

ちなみにThunderbirdは証明書ストアがOSのそれと独立している.したがって, Windows側の証明書ストアをいくら弄ってもThunderbirdには影響しないので注意する (余談だけどFirefoxがWindowsの証明書ストアを使うになるという話もある, そうなったらThunderbirdも追随していくかも).
Outlook2010
秘密鍵の設定
事前に先ほどのpersonal.p12
をインポートしておく(単にエクスプローラーでダブルクリックすればいい).

Outlookの「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」ボタンを押す.

「電子メールのセキュリティ」の「設定」ボタンを押す.事前に個人証明書をインポートしていれば 自動的に設定される.

公開鍵の設定
新しい連絡先を作って,受信者のメールアドレスを入力し,「証明書」ボタンを押す.

「インポート」ボタンで受信者の公開鍵をインポートする.これで受信者のメールアドレスと公開鍵が 関連づけられる.

Outlookの場合,自分自身の公開鍵も同じ手順で「連絡先」に設定しておく必要がある点に注意する.