使用TLS / SSL客户端的HTTPS无法正常工作

时间:2014-03-17 20:10:21

标签: ssl https proxy socks

根据RFC 2818,第2节: http://www.ietf.org/rfc/rfc2818.txt

  

"从概念上讲,HTTP / TLS非常简单。只需使用HTTP over TLS即可     正如您在TCP上使用HTTP一样。"

我有一个应用程序通过TLS / SSL客户端连接到端口443上的Web服务器。连接后,TLS客户端发送HTTP标头和关联的HTTP有效负载(全部包含为TLS / SSL客户端的应用程序负载)。

  

POST https://www.somehost.com/pubs/m_login HTTP / 1.0
     内容类型:application / x-www-form-urlencoded
     主持人:www.somehost.com
     用户代理:NativeHost
     内容长度:50

     

username = user%40example.com& password = password

我从服务器收到200响应,表明它收到了我的请求。但是,HTTP响应正文包含实际的服务器应用程序响应,这表示失败。

  

HTTP / 1.1 200 OK
     日期:星期二,2014年3月18日02:47:43 GMT
     服务器:Apache / 2.2.24(FreeBSD)mod_fastcgi / 2.4.6 mod_ssl / 2.2.24 OpenSSL / 0.9.8e DAV / 2 mod_perl / 2.0.8 Perl / v5.12.5
     缓存控制:无缓存,max-age = 0
     Pragma:no-cache0
     内容长度:118
     Set-Cookie:bcdb_session = cd12abe27a5c55e3a076763329cc0cd31e246751;路径= /; expires = Tue,01-Apr-2014 02:47:43 GMT;仅Http
     变化:接受编码
     连接:关闭
     Content-Type:text / xml; charset = UTF-8

     

<?xml version =" 1.0"编码=" UTF-8">
     < appname中>
       <错误> not_logged_in< /错误>
       <状态>&误差LT; /状态>
     < /应用程序的名字>

当我使用支持HTTPS的客户端并发送发送请求标题和正文时,我得到一个成功的响应(http 200响应和响应正文都表示成功)。

  

HTTP / 1.1 200 OK
     日期:2014年3月18日星期二03:04:22 GMT
     服务器:Apache / 2.2.24(FreeBSD)mod_fastcgi / 2.4.6 mod_ssl / 2.2.24 OpenSSL / 0.9.8e DAV / 2 mod_perl / 2.0.8 Perl / v5.12.5
     缓存控制:无缓存,max-age = 0
     Pragma:no-cache0
     内容长度:84
     Set-Cookie:bcdb_session = 9c0e22a54d7fc28dbd19b748c287d1b25166d78c;路径= /; expires = Tue,01-Apr-2014 03:04:22 GMT;仅Http
     变化:接受编码
     连接:关闭
     Content-Type:text / xml; charset = UTF-8

     

<?xml version =" 1.0"编码=" UTF-8">
     < appname中>
       <状态>&确定LT; /状态>
     < /应用程序的名字>

我尝试捕获这两种方案的网络数据并进行比较。我可以捕获HTTPS客户端,因为它支持HTTP代理(我使用Fiddler)。 SSL / TLS客户端无法使用HTTP代理解决方案,但它支持SOCKS代理。

两个问题:

1)任何想法为什么使用HTTPS客户端与TLS / SSL客户端可能会有不同的结果?

2)有人可以推荐使用SOCKS代理来提供与Fiddler类似的访问请求/响应数据吗?

谢谢, 迈克

1 个答案:

答案 0 :(得分:0)

您确定两种情况下的请求是否相同?例如。第一行对于有效的HTTP请求不正确。如果直接连接,请求行应该是 POST /pubs/m_login HTTP/1.0而非POST https://www.somehost.com/pubs/m_login HTTP/1.0

不幸的是,SOCKS服务器无法帮助您转储请求,因为TLS连接可以防止这种情况发生。 SOCKS服务器提供不透明的隧道。