2016-11-07 28 views
0

是否有任何方法可以明確指定您希望URLSession客戶端在建立安全連接時嘗試和使用的一組密碼套件?無法爲URLSession指定所需的一組密碼套件

我知道NSAppTransportSecurity字典中有NSExceptionRequiresForwardSecrecy鍵,但這似乎並不是我所需要的。

我基本上只是希望能夠告訴客戶端通知其只願意使用下面的密碼套件的服務器:

TLS_RSA_WITH_RC4_128_SHA, 
TLS_RSA_WITH_3DES_EDE_CBC_SHA, 
TLS_RSA_WITH_AES_128_CBC_SHA, 
TLS_RSA_WITH_AES_256_CBC_SHA, 
TLS_RSA_WITH_AES_128_GCM_SHA256, 
TLS_RSA_WITH_AES_256_GCM_SHA384, 

這樣我可以解密HTTP/2流量,以及客戶端和服務器並與之通信。

回答

0

據我所知,在NSURLSession級別沒有辦法做到這一點。當然,您可以編寫基於Secure Transport API的代碼,但AFAIK並沒有簡單的方法使NSURLSession使用自定義的底層套接字。 (你可能可以使用CFHTTPMessage和朋友,使它比自己寫一個完整的HTTP堆棧稍微可怕,但它仍然不會很漂亮。)

這樣說,如果您使用的是HTTPS代理(例如Charles Proxy),它應該能夠指定哪些密碼套件受到支持,並讓您的MitM連接,而無需在應用程序中使用任何自定義代碼。

如果這不符合您的需求,我會鼓勵您在bugreport.apple.com提交增強請求,並解釋您要做什麼以及爲什麼。他們可能會提出一些其他選擇。