Aug 28, 2008

ThunderbirdでS/MIMEのテスト

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等の欄の右端に表示される封印のアイコンからバッテンが消える。

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

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能