BLOGTIMES
2009/04/11

qmail-tlsでhandshake failureになるときは

  qmail  ssl 
このエントリーをはてなブックマークに追加

サーバで"yum update"を実行したら、(たぶん)opensslがアップデートされた副作用でqmailのSSL/TLS接続ができなくなってしまったのでトラブルシュートしてみました。

手始めにopensslを使ってsmtpサーバに接続するとhandshake failureで接続できず。普通のSSLを使っていない場合には普通に接続できるのでSSL関連の障害であることは間違いがないようです。

$ openssl s_client -connect localhost:smtps 14790:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:578:

とりあえず、SSLのエラーが起きていることは分かりましたがこれだけでは何の手がかりにもならないので、プロトコルを変更してて色々試してみたところ、SSLv2に固定したときにエラーがno cipher listに変化することがわかりました。

$ openssl s_client -connect localhost:smtps -ssl2 depth=1 /C=US/O=Equifax Secure Inc./CN=Equifax Secure Global eBusiness CA-1 verify return:1 depth=0 /C=JP/O=sailane.cles.net/OU=GT78429833/OU=See www.rapidssl.com/resources/cps (c)08/OU=Domain Control Validated - RapidSSL(R)/CN=sailane.cles.net verify return:1 14800:error:1406D0B8:SSL routines:GET_SERVER_HELLO:no cipher list:s2_clnt.c:450:

Cipherに関する設定項目はqmail-smtpd.cとqmail-remote.cのソースを眺める限り、control/tlsserverciphers、control/tlsclientciphersしかありません。これまではファイルがなくてもうまく動いていたので気にしていませんでしたが、ひとまずこのファイルを作成してみることに。

ファイルの中身をどうしたらよいのか分からなかったので、OpenSSLのAPIをいろいろと調べてみると、httpd.confの設定と同じようにCipherを列挙すれば良いようなので、設定ファイルを以下のように作ってみました。

$ echo 'ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP:-eNULL' > /var/qmail/control/tlsserverciphers $ echo 'ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP:-eNULL' > /var/qmail/control/tlsclientciphers

この状態で、再度opensslで接続をしてみると、こんな感じでうまく接続できてしまいました。

$ openssl s_client -connect localhost:smtps depth=1 /C=US/O=Equifax Secure Inc./CN=Equifax Secure Global eBusiness CA-1 verify return:1 depth=0 /C=JP/O=sailane.cles.net/OU=GT78429833/OU=See www.rapidssl.com/resources/cps (c)08/OU=Domain Control Validated - RapidSSL(R)/CN=sailane.cles.net verify return:1 220 sailane.cles.net ESMTP

プログラムを見る限り、ファイルが存在しないときはDEFAULTが設定されるはずなので本来はこのような作業は必要ないはずのなのですが・・・・・・なぜうまく行くようになったのかはちょっと腑に落ないところは残りますが、復旧したのでひとまず完了です。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2997
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン