无法为URLSession指定所需的密码套件集

时间:2016-11-07 09:30:20

标签: nsurlsession nsapptransportsecurity

有没有办法明确指定您希望URLSession客户端在建立安全连接时尝试使用的密码套件集?

我知道NSExceptionRequiresForwardSecrecy词典中有NSAppTransportSecurity个键,但这似乎不是我需要的。

我基本上只是希望能够告诉客户端通知服务器它只愿意使用以下密码套件:

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流量。

1 个答案:

答案 0 :(得分:0)

据我所知,在NSURLSession级别无法做到这一点。当然,您可以基于Secure Transport API编写代码,但是AFAIK没有简单的方法使NSURLSession使用自定义底层套接字。 (您可能可以使用CFHTTPMessage和朋友来使它比自己编写完整的HTTP堆栈稍微不那么糟糕,但它仍然不会很漂亮。)

话虽如此,如果您使用的是HTTPS代理(例如Charles Proxy),它应该能够指定支持哪些密码套件,并让您可以连接MitM,而无需在应用程序中使用任何类型的自定义代码本身。

如果这不符合您的需求,我建议您在bugreport.apple.com上提交增强请求,并解释您要做的事情以及原因。他们或许可以提出其他一些选择。