iOS是否支持TLS压缩?
我需要压缩通过我的iOS应用程序中的安全通道发送的数据,我想知道是否可以使用TLS compression。我无法弄清楚Apple的TLS实现Secure Transport是否支持相同的功能。iOS是否支持TLS压缩?
是否有其他人知道在iOS中是否支持TLS压缩?
我试图确定Apple的SSL/TLS实现是否支持压缩,但我不得不说,恐怕它没有。
起初我希望有一个errSSLPeerDecompressFail
错误代码,必须有一种方法来启用压缩。但我找不到它。
Apple不支持压缩的第一个显而易见的原因是我从我的设备(6.1)在不同端口打开安全套接字时所做的几次线卡捕获。其中的所有客户端Hello报文只报告一种压缩方法:null
。
然后我看着Apple提供的libsecurity_ssl
的最后一个可用代码。这是Mac OS X 10.7.5的实现,但是有些东西告诉我,如果不相同,那么iOS将会非常相似,但它肯定不会比Mac OS X更强大。
您可以将文件sslHandshakeHello.c
中发现,线186-187(SSLProcessServerHello
):
if (*p++ != 0) /* Compression */
return unimpErr;
该错误代码,听起来很像“如果服务器发送另一个压缩,但null
(0),我们不”实施,那么失败“。
再次,相同的文件时,线325(SSLEncodeClientHello
):
*p++ = 0; /* null compression */
,别无其他周围(DEFLATE
是方法1中,根据RFC 3749)。
下面,线469,476和482-483(SSLProcessClientHello
):
compressionCount = *(charPtr++);
...
/* Ignore list; we're doing null */
...
/* skip compression list */
charPtr += compressionCount;
我认为这是很明显,这个实现只处理null
压缩:它是在客户端发送的唯一一个您好,这是服务器Hello中唯一理解的,并且在收到客户端Hello时忽略压缩方法(每个客户端必须实现并提供null
)。
所以我认为你和我都必须实现应用程序级压缩。祝你好运。
感谢您深入挖掘! – 2013-06-18 05:11:34