[#48430] WEBrick — 牛坂 博則 <ushizaka.hironori@...>
|牛坂ともうします。
8 messages
2011/10/03
[#48443] 関数の戻り値について — "Jun'ya Shimoda" <jun-shimo@...>
下田です。
7 messages
2011/10/07
[#48450] 1.8.7と1.9.2の挙動の違いについて — "Jun'ya Shimoda" <jun-shimo@...>
下田です。
13 messages
2011/10/09
[#48454] Re: 1.8.7と1.9.2の挙動の違いについて
— dezawa <dezawa@...>
2011/10/10
出沢です
[#48467] net/https のproxy経由接続シーケンスについて — KASUGA Toru (春日 玄) <kasuga.toru@...>
春日と申します。
7 messages
2011/10/14
[#48468] Re: net/https のproxy経由接続シーケンスについて
— 名島太樹 <h.najima@...>
2011/10/14
名島と申します。
[#48475] Re: net/https のproxy経由接続シーケンスについて
— KASUGA Toru (春日 玄) <kasuga.toru@...>
2011/10/16
名島様
[#48484] Windows で $0 へ代入すると刈り取られる — "5.5" <5.5@...>
5.5 です。
10 messages
2011/10/20
[#48485] Re: Windows で $0 へ代入すると刈り取られる
— Nobuyoshi Nakada <nobu@...>
2011/10/21
なかだです。
[#48486] Re: Windows で $0 へ代入すると刈り取られる
— "5.5" <5.5@...>
2011/10/21
5.5 です。
[#48496] IE9/Windows7(64bit)だとformをsubmitできない — 大縄亮 <onawa@...>
44Gv44GY44KB44G+44GX44Gm44CC5qCq5byP5Lya56S+44Oe44Kk44Os44O844K444OG44Kv44OO
7 messages
2011/10/25
[ruby-list:48467] net/https のproxy経由接続シーケンスについて
From:
KASUGA Toru (春日 玄) <kasuga.toru@...>
Date:
2011-10-14 02:30:09 UTC
List:
ruby-list #48467
春日と申します。
Windows/MinGW で、
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
を使用しております。
----
require 'net/https'
Net::HTTP.version_1_2
http = Net::HTTP::Proxy("proxy.example.com", 8080).new('www.google.co
m', 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
http.start {|w|
response = w.get('/')
puts response.body
}
----
と言うようなコードで、proxy 経由のhttps接続を試みますと、うまく接続で
きない場合があります。
というのも、
net/http.rb のL.664辺りが、
----
if use_ssl?
begin
if proxy?
@socket.writeline sprintf('CONNECT %s:%s HTTP/%s',
@address, @port, HTTPVersion)
@socket.writeline "Host: #{@address}:#{@port}"
if proxy_user
credential = ["#{proxy_user}:#{proxy_pass}"].pack('m')
credential.delete!("\r\n")
@socket.writeline "Proxy-Authorization: Basic #{creden
tial}"
end
@socket.writeline ''
HTTPResponse.read_new(@socket).value
end
----
となっており、
@socket.writeline sprintf('CONNECT %s:%s HTTP/%s',
@address, @port, HTTPVersion)
のが実行された結果、
CONNECT ...
を含む行が、先行してtcp reassembled pduとして送信されます。
# その後、Host を含む行が、続きのパケットとして送信されます。
この先行のtcp reassembled pduパケットが、あるfirewallソフトだと黙って
廃棄されてしまい、クライアントとしてはACKを待つので、接続がタイムアウ
トしてしまいます。
# このfirewallが、この小さいtcp reassembled pduを黙って廃棄している理
由はわかりませんでした。
もちろん、このfirewallソフトを無効化すれば接続シーケンスは無事完了し
ます。
また、
@socket.writeline "Host: #{@address}:#{@port}"
をコメントアウトすると、CONNECTを含む行は、tcp reassembled pdu ではな
く、単一のパケットとして送信され、接続シーケンスは無事完了します。
net/http.rb の実装は、何となく、CONNECTとHostを1つのパケットとして送
ることを想定しているように思いますが、私が検証したように、tcp reassem
bled pdu で送信されることは想定した動作なのでしょうか?
# もしかして、openssl側の問題かも知れませんが…
-----------------------------------------
春日 玄 (KASUGA Toru)
E-mail : kasuga.toru@jp.fujitsu.com