SSL/TLS'nin Apple uygulamasının sıkıştırmayı destekleyip desteklemediğini belirlemeye çalışıyordum ama korkmam gerektiğini söylemem gerekiyor.
Başta, errSSLPeerDecompressFail
hata kodu olması umulurunda, sıkıştırmayı etkinleştirmenin bir yolu olmalıydı. Ama ben bulamadım.
Apple'ın sıkıştırmayı desteklemediği ilk açık neden, aygıtımdan (6.1) farklı bağlantı noktalarında güvenli yuvalar açtığım birkaç kablo yakalamasıdır. Hepsinde, İstemci Hello paketi, sadece bir sıkıştırma yöntemi bildirdi: null
.
Daha sonra Apple'ın kullanabileceği en son libsecurity_ssl
koduna baktım. Bu Mac OS X 10.7.5 uygulamasının uygulanmasıdır, ancak bir şey bana iOS'un aynı olmasa da çok benzer olacağını, ancak kesinlikle Mac OS X'den daha güçlü olmayacağını söyler.
Dosyadaki sslHandshakeHello.c
bulabileceğiniz, çizgiler 186-187 (SSLProcessServerHello
): Bu hata kodu 'sunucu başka sıkıştırma gönderirse ancak null
(0), biz mi”gibi bir çok geliyor
if (*p++ != 0) /* Compression */
return unimpErr;
Bunu uygulamak, yani başarısız ”.
Yine aynı dosya, satır 325 (SSLEncodeClientHello
):
*p++ = 0; /* null compression */
ve başka hiçbir şey etrafında (DEFLATE
RFC 3749 e göre, yöntem 1). Aşağıda
, çizgiler 469, 476 ve 482-483 (
SSLProcessClientHello
): Bu Client gönderilen tek Merhaba: Ben uygulama sadece
null
sıkıştırma işleme oldukça açık olduğunu düşünüyorum
compressionCount = *(charPtr++);
...
/* Ignore list; we're doing null */
...
/* skip compression list */
charPtr += compressionCount;
, Sunucu Merhaba'da anlaşılan tek kişi ve İstemci Merhaba (Compliance) alındığında sıkıştırma yöntemleri yok sayılır (her istemci tarafından null
uygulanmalı ve sunulmalıdır).
Bu yüzden hem siz hem de ben bir uygulama düzeyinde sıkıştırma uygulamak zorundayız. İyi şanslar.
Bunun için teşekkürler! –