Home > Latest topics

Latest topics > ThunderbirdでS/MIMEのテスト

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

ThunderbirdでS/MIMEのテスト - Aug 28, 2008

Tuhnderbirdには標準で、メールを暗号化したりデジタル署名を付けたりする機能(S/MIME)が含まれている。しかし、これに使う証明書はベリサイン等で購入する必要があるので、ちょっとテストしてみたいという場合にはけっこう難儀する。

これについて、いわゆるオレオレ証明書でS/MIMEのテストをやる手順を以下にまとめておく。テストした環境は、Ubuntu 8.04とWindows XP。

  1. Ubuntuのコマンドラインで以下を実行。openssl req -new -x509 -days 365 -nodes -keyout mail.key -out mail.crt
  2. 設問が色々表示されるけれので、後で分かりやすいようにそれぞれ入力しておく。自分は Country Name = JP, State = Tokyo, Locality Name = 空欄, Organization = TEST, Unit = 空欄, Common Name = Piro, Email Address = 実際にメールの送信に使うアドレス と入力した。
  3. カレントディレクトリにmail.keyというファイル(暗号化したり署名したりするための個人用の秘密鍵)と、mail.crtというファイル(証明書、復号や署名の検証に使う公開鍵)が生成される。

これで、秘密鍵と公開鍵のペアができた。次に、送信者側の設定。

  1. 今作成した鍵のペアは2つのファイルに別れているけれども、秘密鍵をTunderbirdにインポートするにはPKCS#12形式に変換しないといけない。Ubuntuのコマンドラインで以下を実行。openssl pkcs12 -export -inkey mail.key -in mail.crt -name "適当な名前" -out mail.pfx
  2. 新しいパスワードの入力を求められるので、適当なパスワードを入力する。(PKCS#12形式に変換された秘密鍵は通常時は封印された状態となり、使う時にはパスワードの入力が必要になる。ここで設定するのは、この、秘密鍵の封印を解くためのパスワードである。)
  3. mail.pfxという名前のファイルができる。
  4. ツール→オプション→詳細→証明書→証明書を表示 で証明書マネージャを起動する。
  5. まず、先ほどのオレオレ証明書を証明書として使えるようにする。「認証局証明書」タブで「インポート」をクリックして、先ほど生成したmail.crtを選択する。
  6. 「本当にこの認証局を信頼しますか?」云々のダイアログが出るので、「この認証局によるメールユーザの識別を信頼する」にチェックを入れて「OK」ボタンを押す。
  7. 証明書のインポート完了。上記の例そのままで入力していた場合、認証局証明書の一覧の中に、Organization Nameで入力した名前の項目(先の例なら「TEST)と、その子項目としてCommon Nameで入力した名前の項目(先の例なら「Piro」)が増えていることを確認する。この操作をしていないと、秘密鍵が信頼されていないと言われて署名や暗号化ができない。
  8. 「あなたの証明書」タブの「インポート」ボタンをクリックして、先ほど生成したmail.pfxを選択する。
  9. 先ほど入力したパスワード(秘密鍵の封印を解くパスワード)を入力する。
  10. 「証明書と秘密鍵が正常に復元されました。」と表示される。これで、秘密鍵がThunderbirdの証明書ストアに取り込まれた。マスターパスワードを利用していない環境では、この時マスターパスワードを設定するよう求められる場合もあるので、そっちも適当に入力しておく。
  11. アカウント設定の「セキュリティ」パネルで、「デジタル署名」欄の「選択...」ボタンを押して、先ほど登録した証明書を選択する(先の例なら「Piro - TEST」)。
  12. 「あなたへのメッセージの暗号化と復号にも同じ証明書を使用しますか?」と聞かれるので「OK」を押す。これで、「暗号化」の方にも同じ証明書が選択される。

これで送信者側の設定は完了。新しくメールを作成して、ツールバーの「セキュリティ」ボタン(錠前のアイコン)の右の▼をクリックし、署名するだけの場合は「このメッセージにデジタル署名する」にチェック、暗号化する場合は「このメッセージを暗号化する」にチェックを入れて、自分宛に送信してみよう。受信したメールを選択すると、Subjectや送信者名などが表示されている欄の右端に、錠前(暗号化されたメール)や封印(署名されたメール)のアイコンが表示されていれば、S/MIMEでメールを送信できた事が分かる。

ちなみに、この状態で署名や暗号化されたメールを他の人に送った場合、受信者側では、署名されたメールでは封印のアイコンにバッテンが付いたアイコン、暗号化されたメールでは錠前にバッテンが付いたアイコンに加えて「このメッセージを復号できませんでした」というメッセージが表示される。

というわけで受信者側でも以下の設定が必要になる。

  1. ツール→オプション→詳細→証明書→証明書を表示 で証明書マネージャを起動する。
  2. 「認証局証明書」タブで「インポート」をクリックして、先ほど生成したmail.crtを選択する。
  3. 「本当にこの認証局を信頼しますか?」云々のダイアログが出るので、「この認証局によるメールユーザの識別を信頼する」にチェックを入れて「OK」ボタンを押す。
  4. 証明書のインポート完了。

本当はこの後「他の人の証明書」他部を選択して同じ手順で証明書(公開鍵)をインポートする必要があると思うんだけど、ここまでで出てきているmail.crtは適当に作ったオレオレ証明書で認証局証明書と兼用になってしまってるので、「他の人の証明書」でインポートしようとしてもうまくいかなかった。

ともかく、認証局証明書にオレオレ証明書を登録した状態で、先程の送信者からの署名済みメールを受け取ると、Subject等の欄の右端に表示される封印のアイコンからバッテンが消える。

暗号化の方はよくわかんない……オレオレ証明書を一個だけ作るんじゃなくて、認証局証明書と個人用証明書の二つを作ってもう一度実験してみないといけない?

分類:Mozilla > Thunderbird, , , 時刻:15:17 | Comments/Trackbacks (2) | Edit

Comments/Trackbacks

暗号化できない?

ちょっと勘違いされているのか文中の言葉がおかしいのですが、
- 暗号化には秘密鍵は使わない
- 復号には秘密鍵が必要
です。
あなたが証明書を作成した場合、
- あなたが署名する
- あなた宛の暗号化されたメールをあなたが受け取る
(上記暗号化メールを作成するためには送信者側にあなたの証明書がインストールされていることが必要)
ことが可能になります。
「あなたが他人へ暗号化されたメールを送る」場合は受信者が証明書を作成する必要があります。やっかいですね。

ということで、メールを暗号化してやりとりするにはそれぞれの証明書をみんなが知っていることが前提で、それが難しかったり面倒だったりします。
仲間内でS/MIMEで遊ぶ場合、1つ認証局を作ってその下にそれぞれの個人用証明書を作っておけば、他人の個人証明書を持ってなくても(認証局証明書さえインストールしてれば)
署名検証が可能です。ついでに署名付きメールを受け取るとその人の証明書を自動的に記憶してくれます。なのでThunderbirdの場合、最初に署名付きメールをやりとりして自分の証明書を行き渡らせることが一般的だと思います。
(Outlook等なら他の方法も可能)

Commented by takeshi at 2008/08/30 (Sat) 07:36:45

LDAP使う方法もあります

> (Outlook等なら他の方法も可能)
すみません嘘書きました。Thunderbirdでも他の方法が可能でした。
LDAPサーバ上に証明書を登録しておけばそれを自動的に検索して必要な証明書を取ってくることが可能です。取ってきた証明書を表示する拡張機能もあります。
Cert Viewer Extended
https://addons.mozilla.org/en-US/thunderbird/addon/5224
LDAPサーバを構築するのがハードル高めですが。

Commented by takeshi at 2008/11/17 (Mon) 04:13:52

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2008-08-28_smime.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード