2015年5月28日木曜日

wanderlust: use gnutls insted of starttls

wanderlust: use gnutls insted of starttls

Created: Thu, May 28 10:55:42 JST 2015
Last modified: Thu, May 28 17:31:49 JST 2015

もしも F1 v starttls-use-gnutls あるいは M-x customize-valiable starttls-use-gnutls して、すでに "nil" ではなく "t" になっているならここから先はまったく必要ない。


手元では emacs24.5, wl, starttls についてはソースからインストール、gnutls-bin は deb パッケージをインストールしてある。

最近、TLS まわりにインシデントが出てきていろいろと調整していた。いろいろとログを見ていたら手元の wanderlust が LAN 内にある cyrus-imapd に接続に行くときに
 starttls: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits new) no authentication
で接続していることに気づいた。

これ、そろそろ TLSv1.2 にしたほうが良いだろう、ということでうろうろしてみた。

starttls.el 自体は Gnus の一部として Emacs 本体に含まれている(emacs-*/lisp/gnus/starttls.el)。そこから先、実際にサーバーとコネクトする部分についてはカスタマイズ可能な変数として starttls.el で定義されている。

starttls.c (ftp://ftp.opaopa.org/elisp/starttls-0.10.tar.gz) を読んでみると TLSv1 の記述は見つかるが TLSv1.2 の記述は見つからない。

そこで starttls.el から starttls.c(のコンパイルされたもの) を呼ぶのではなく gnutls-cli を使って TLS 接続してみる。

 ;; wl だけで有効にしたいなら~/.wl に記述。
 (setq starttls-use-gnutls t)
 (setq starttls-gnutls-program "gnutls-cli")
 (setq starttls-extra-arguments '("--insecure"))


(M-x customize-variable でもいいかも)
自己署名証明書を使っている場合に検証 (validate) で弾かれるような場合は "--insecure" オプションを有効にする。これ、本来は MITHM があるので良くない。サーバーによって "--insecure" つけるかどうかフラッグで切り替えた方がよさそう..

詳細は man gnutls-cli して確認。

wl + gnutls-cli で cyrus-imapd へ接続した場合の cyrus-imapd のログは、
 starttls: TLSv1.2 with cipher ECDHE-RSA-AES128-SHA (128/128 bits new) no authentication
のようになった。

ひょっとすると deb パッケージなどで emacs + wl な環境とかだと、すでにこのあたり有効になってる可能性高いので、必ず
 M-x describe-valiable starttls-use-gnutls
とかして t か nil かをまず確認してみること。

0 件のコメント:

コメントを投稿