From: Kazuhiro NISHIYAMA Date: 2008-09-08T20:19:14+09:00 Subject: [ruby-dev:36214] Re: OpenSSL Test Failure 西山和広です。 At Fri, 5 Sep 2008 20:06:11 +0900, Tadashi Saito wrote: > > これって自分の環境だけでしょうか。OpenSSLのバージョンは 0.9.8g-13 です。 > 問題を解決するために、他にも提供すべき情報がありましたら、教えてください。 こちらのx86のlenny環境でも以前から発生しています。 Ubuntu 8.04.1だと発生しないので、Ubuntu 8.04.1の openssl_0.9.8g-4ubuntu3.3.diff.gzと lennyのopenssl_0.9.8g-13.diff.gzを眺めて違いをみてみると --- openssl-0.9.8g.orig/ssl/s3_srvr.c +++ openssl-0.9.8g/ssl/s3_srvr.c @@ -1093,8 +1093,16 @@ * session-id if we want it to be single use. * Currently I will not implement the '0' length session-id * 12-Jan-98 - I'll now support the '0' length stuff. + * + * We also have an additional case where stateless session + * resumption is successful: we always send back the old + * session id. In this case s->hit is non zero: this can + * only happen if stateless session resumption is succesful + * if session caching is disabled so existing functionality + * is unaffected. */ - if (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER)) + if (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER) + && !s->hit) s->session->session_id_length=0; sl=s->session->session_id_length; という部分が気になったので、 Index: test/openssl/test_ssl.rb =================================================================== --- test/openssl/test_ssl.rb (revision 19243) +++ test/openssl/test_ssl.rb (working copy) @@ -439,7 +439,8 @@ start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true) do |server, port| 2.times do sock = TCPSocket.new("127.0.0.1", port) - ssl = OpenSSL::SSL::SSLSocket.new(sock) + ctx = OpenSSL::SSL::SSLContext.new("TLSv1") + ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx) ssl.sync_close = true ssl.session = last_session if last_session ssl.connect としてみるとlennyでも通るようになりました。 -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)