mutt の S/MIME 機能の利用法 - contrib/smime.rc の内容を .muttrc に追加します。smime_sign_as の行の 変更については心配無用です。この後でちゃんと変更しますから。 - 'smime_keys init' を実行します。 - OpenSSL をダウンロードしてインストールします。 - 証明書を取得します。(www.thawte.com から無料でもらえますし、VeriSign や 他の同業者に代金を払って入手することもできます。) 一般的な方法では、 証明書はウェブブラウザの「中に」インストールされます。どのアプリケイション で証明書を使うか聞かれた場合には Netscape を選びます。まったく奇妙なことに "mutt" は選択肢にないのが普通です。 - Mozilla を使っているとすると、 www.verisignlabs.com/Projects/smime_docs/linux.html の指示に従えば 証明書を cert.p12 というファイルにエクスポートできます。Mozilla を 使っていない場合は、自分でどうにかしてください。 - "smime_keys add_p12 cert.p12" を実行します。 * スクリプトが "Import password" の入力を求めたときには、証明書を エクスポートしたときに付けたパスワードを入れます。 * "PEM pass phrase" を聞かれたときには、新しいパスワードを作ります。 これからメッセイジを署名したり復号化するたびに、mutt がこの PEM パスフレイズを聞いてくることになります。 * 最後に、スクリプトは "label" をどうするか聞いてくるので、証明書に 何か覚えやすい名前 ("jibun" など) を付けます。すると、スクリプトの 出力には次のような行が含まれるはずです。 added private key: /home/raldi/.smime/keys/12345678.0 for raldi@verisignlabs.com この、最後に ".0" の付いた数字が自分の鍵 ID です。次のステップでは この数字が必要になります。 - muttrc の smime_sign_as の行を編集します。鍵 ID を自分の ID にしてください。 - contrib/ca-bundle.crt にある、信用できるルート証明書をインポートしておくと 良いでしょう。そうしておけば、その中のどれかによって完全に正しく署名 されたものを自分も信用するようになります。これは "smime_keys add_root" を 使っておこなえますし、mutt の smime_ca_location 変数で指定してある場所に ca-bundle.crt をコピーするだけでもかまいません。 その他の注記 鍵は OpenSSL の CA ディレクトリとよく似た方法で管理されます。秘密鍵と証明書は 違うディレクトリに格納されます。それぞれ別の一つずつのファイルとして OpenSSL に渡す必要があるからです。また、各ディレクトリには '.index' という 名前のファイルがあり、その各行に幾つかの項目があります (行はソートされて いません)。項目は、メイルボックス、鍵 ID, ラベル、中間証明書の ID, 鍵フラグ です。 * 鍵 ID は証明書の subject 欄に由来するハッシュ値で、OpenSSL が付けて くれます。 * メイルボックスアドレスはメッセイジの From または Sender 欄に由来し、 証明書の email 欄に合致します。合致しないものは拒否されて、証明書は メイルボックスアドレスのない状態になります。(これはセキュリティの ためですが、もしかすると変更可能にすべきかもしれません。) * ラベルは、鍵ペアをデイタベイスに入れる際に perl スクリプトが 入力を要求して、それによって設定されます。残りの二つの項目も同じです。 * 鍵フラグは perl スクリプトの証明書検証オプションで設定されます。 以下のいずれか一つの値をとることができます。i: 不正 (検証失敗), r: 破棄済み、e: 期限切れ、u: 未検証、v: 検証成功、t: 信用済み。 信用済みとは、正しく検証され、かつ、自分でそれを信用することを選んだ ということです (スクリプトが尋ねてきます)。mutt は、不正、破棄済み、 また期限切れの証明書を署名や暗号化に使いません。未検証の証明書は 使用前に確認しますし、検証に成功していても未信用の証明書には、使用前に 警告を出します。 証明書の purpose 欄は今のところ検証されませんし、指定されたファイルが 本当に証明書なのかどうかのチェックも、実際のところ、まったくありません。 もうお分かりかと思いますが、鍵の取得は、指定したメイルボックスアドレスを index ファイルの中で探すことによっておこなわれます。もし一つも見付からない 場合には、使える鍵の一覧が表示されてそこから選ぶことになります。 muttrc の中で指定された証明書や鍵ディレクトリは、既に存在していなくては なりません。Mutt は作成してくれないからです。メッセイジに署名したいと 思っているのであれば、現在の mutt は (今のところ?) PKCS10 や PKCS12 を 作成できないということにご注意ください。つまり、有効な証明書を mutt の外で 入手する必要があるということです。(上述の方法をご覧ください) ~/.mailcap に次の内容を追加すると、証明書が閲覧できるようになります。 application/x-pkcs7-signature;openssl pkcs7 -in %s -inform der -noout \ -print_certs -text | less; needsterminal