StartSSLでS/MIMEするときのメモ

暗号化メールのやり方として,前回はOpenPGPを検討していたのですが, 今度はS/MIMEのほうを検討してみました.結論から言えば,ソフトウェアのサポート状況は やはりOpenPGPよりもS/MIMEのほうがこなれている感じですね.仕事に使うならこちらの方が よいかも知れません.

S/MIMEの場合,証明書(公開鍵)の信頼性はPKIによって保証されるので,鍵の取り回しは PGPに比べれば少し楽です.PGPのWeb of Trustの場合も「誰かを絶対的に信頼する」という仕組みは PKIと変わりませんが,信頼性の確認は自分で行う必要がある──言ってしまえば,通信する相手,あるいは 信頼する相手の鍵は直接会って交換するするしかないので,この部分をPKIに頼ることが できるというのは大きな利点です.

ただし,S/MIMEの場合は証明書の取得そのものが最大の壁です. 今回はStartSSLでメール用のクライアント証明書を取得して設定してみたので,そのあたりのことをメモしておきます (自分用のメモなのでところどころ端折ってます).

StartSSLでのS/MIMEクライアント証明書の取り方

ログインすれば操作はそれほど難しくないので省略します.

基本的流れだけ書いておくと,

  1. 発行対象のメールアドレスの検証
    1. Validation Wizardで発行対象のメールアドレスに対するEmail Validationを選択してContinueする.
    2. 発行対象のメールアドレス宛に以下のようなメールが送られてくるので,verification codeを入力して先に進む.
    3. 以上で発行対象のメールアドレスに対してS/MIME証明書などを作ることができるようになる.
  2. 証明書の発行
    1. Certificates WizardClient S/MIME and Authentication Certificateを選択してContinueする.
    2. 発行対象のメールアドレスを入力する.
    3. キーペアを作成して,証明書署名要求(csr)を作成する.ウェブブラウザで作成する方法と,ツールを使う方法の 2つがあるが,opensslを使用する場合は,ページにも書いてあるが以下のようにする(yournameは適当に置き換える).
      openssl req -newkey rsa:2048 -keyout yourname.key -out yourname.csr
      yourname.csrが生成されるのでこの中身をページ内のフォームに貼り付けてSubmitする.
      • openssl.confのnsCertTypeclient,emailにしておく必要がありそうだけどなくても大丈夫かも知れない.
    4. 以上で証明書が発行される.次のページで(メールアドレス).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の場合,自分自身の公開鍵も同じ手順で「連絡先」に設定しておく必要がある点に注意する.

Leave a Reply