thunderbird
証明書
USBメモリ
SMIME
PKCS#11

ThunderbirdのS/MIME証明書をUSBメモリに入れる

はじめに

ThunderbirdにS/MIME証明書を直接インポートした場合、S/MIME証明書の秘密鍵が漏洩しやすく、せっかくのS/MIME証明書の効果が薄れます。そこでUSBメモリをICカードにするエミュレータ myuTokenを使ってS/MIME証明書をUSBメモリに入れる方法を説明します。

USBメモリは安全か?

通常、USBメモリを挿入するとマスストレージクラスのドライバが起動されてドライブとして利用できるようになるのですが、myuTokenではICカードリーダのI/Fを持ったUSBメモリのドライバに交換しているので低レベルなディスク操作でもコピーされることはありません。万が一、コピーされてもパスワードで暗号化されているので、それなりに安全です。ただし本物のICカードのような安全性はありません。

S/MIME証明書の取得方法

Qiitaのこの記事に無料で証明書を取得方法とPKCS#12にする方法があります。

PKCS#12をUSBメモリにインポート

省略します。myuTokenの説明書に詳しく書いてあります。myuTokenのバージョンは本日(2018年3月17日)リリースしたVer2.0.2.0以降を使ってください。Ver2以降でUSBメモリをICカードにしていた場合、アンインストールしても、USBメモリはICカードのままなので、Ver2.0.2.0にバージョンアップして、そのまま利用可能です。

ThunderbirdにPKCS#11のモジュールを登録

Thunderbirdを起動してオプションから証明書タブのセキュリティデバイスを選択
THUN1.png

追加ボタンをクリック

THUN2.png

C:\Windows\system32\icardmodpk.dll を選択します。Thunderbirdは32bitなので64bitOSでも、32bitOSでも同じになります。

THUN3.png

次に

アカウントの設定を開いてS/MIME証明書を取得したメールアドレスの「セキュリティ」をクリックして、デジタル署名のところの選択ボタンをクリックします。必ずS/MIME証明書の入ったUSBメモリをパソコンに刺してからThunderbirdを起動してください。

THUN4.png

ICカードのピンを入力します。デフォルトは iCanal ですが、必ずmyuToken側で変更しておいてください。

THUN5.png

証明書を選択する画面になるのでOKします。

THUN6.png

続いて暗号化に使う証明書について確認されるので、これもOKします。

S/MIME証明書の中間CAをThunderbirdにインポート

myuTokenを起動して、中間CAファイルを出力させます。
THUN7.png

ee.cer , ca1.cer , ca2.cer などのファイル名の証明書が出力されます。ee.cer , ca1.cer , ca2.cerの場合はca1.cerが中間CAファイルです。ee.cer , ca1.cer , ca2.cer , ca3.cerの場合はca1.cerとca2.cerの2つが中間CAファイルになります。中間CAが存在しない場合もあり得ます。

オプション-詳細から、「証明書を管理」ボタンをクリック

THUN8.png

認証局証明書タブを選択して、「インポート」ボタンをクリック。中間CAのファイルをインポートします。複数あれば、全部。

THUN9.png

設定完了

上記までで設定は完了です。
S/MIME証明書を使うときはThuderbirdを起動する前に、証明書の入ったUSBメモリを刺して置くことが必須です。 メモリカードリーダとSDカードなどのメモリカードの組み合わせの場合、メモリカードはThunderbirdの起動後に挿抜しても大丈夫です。そのほうが便利かもしれません。
ただし、最近のThunderbirdでは署名がうまくいかなくなっているようです。次のような手順で署名をしてください。

署名手順

SIGN1.png

SIGN2.png

上記メッセージが出るようなら、次の手順を追加してください。

SIGN3.png

SIGN4.png

SIGN5.png

これで署名メールが送信できるようになると思います。

毎回、署名手順をするのが面倒な方

現在の最新バージョンの52だけしか、うまくいかないかもしれませんが、プロファイルを修正すると、うまくいく方法を、たまたま見つけました。便利です。
隠しファイルを表示できるようにして、次のフォルダを開きます。
C:\Users###\AppData\Roaming\Thunderbird\Profiles
次のようなフォルダがあるので、そのフォルダにあるprefs.jsをテキストエディタで開きます。
3tpfrct7.default

user_pref("mail.identity.id8.reply_on_top", 0);
user_pref("mail.identity.id8.sig_bottom", true);
user_pref("mail.identity.id8.sign_mail", false);
user_pref("mail.identity.id8.signing_cert_dbkey", "AAAAAAAAAAAAAAARAAAAmgCTJGZyK5vStDRYsRsf8kv+MIGXMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE9MDsGA1UEAxM0Q09NT0RPIFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQ==");
user_pref("mail.identity.id8.signing_cert_name", "Canal Card:MYUTOKEN");
user_pref("mail.identity.id8.smtpServer", "smtp2");

S/MIME証明書のメールアドレスがある近くに、signing_cert_dbkey があるので、これを削除します。これがなくなると署名メールを送信するときにICカードのPINを入力するダイアログが表示されるようになって、PINを入力するとメールが送信されるようになります。

おわりに

USBメモリなので、それほど安全性は向上しないかもしれないですが、より高い安全性を期待される方は、やはり専用のICカードやUSBデバイスを利用されたほうがいいと思われます。