使用带有AFNetworking的SSLSetEnabledCiphers来禁用弱密码

我试图禁用一些密码(弱),如单个DES,单个DES 40位等

我试过使用这一点的代码如何设置SSL密码在cocoa中使用CFSocket / CFStream? 并从邮件列表消息CFNetwork SSL和长阻塞延迟,但我需要访问套接字数据来获取CFDataRef

下面是我尝试在AFURLConnectionOperation类的握手方法中插入的代码:

 - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge (NSURLAuthenticationChallenge *)challenge{ CFReadStreamRef stream = [sock getCFReadStream]; CFDataRef data = CFReadStreamCopyProperty(stream, kCFStreamPropertySocketSSLContext); // Extract the SSLContextRef from the CFData SSLContextRef sslContext; CFDataGetBytes(data, CFRangeMake(0, sizeof(SSLContextRef)), &sslContext); // Get all enabled ciphers size_t numCiphers; SSLGetNumberEnabledCiphers(sslContext,&numCiphers); SSLCipherSuite ciphers[numCiphers]; SSLGetEnabledCiphers(sslContext,ciphers,&numCiphers); // Create a new cipher array with only non-DH ciphers, and set it SSLCipherSuite finalCiphers[numCiphers]; int numFinalCiphers = 0; for(int i=0; i<numCiphers; i++) { SSLCipherSuite suite = ciphers[i]; if(!cipherSuiteUsesDH(suite)) { finalCiphers[numFinalCiphers] = suite; numFinalCiphers++; } } SSLSetEnabledCiphers(sslContext,finalCiphers,numFinalCiphers); } 

任何和所有的帮助,将不胜感激。

编辑:不幸的是,这是一个现有的项目,它仍然使用AFNetworking的版本1。

使用带有AFNetworking的SSLSetEnabledCiphers来禁用弱密码

好吧,这个引起了我的兴趣,因为它是我用其他语言做的事情,而不是Cocoa / CocoaTouch。 它在我的TODO名单上已经有一段时间了。 答案是你在使用NSURLConnection这样的高级对象时无法做到这一点。

无法find弥合NSURLConnection和朋友之间的差距和设置密码套装所需的低级别东西的方法。 如果你有兴趣,低级别的“最高”就是CFSocketStream 。 所以这个工作是让NSURLConnectionCFSocketStream一起工作(或者访问NSURLConnectionCFSocketStream )。

我还在苹果的networking编程邮件列表上反映了你的问题,Jens和Quinn证实了这一点(Quinn提供了关于CFSocketStream的信息)。 请参阅configuration由NSURLConnection使用的套接字? 。

此外,如果您没有意识到,试图修改-connection:didReceiveAuthenticationChallenge:的属性为时已晚。 当你得到身份validation的挑战时,握手已经在进行(即ClientHello已经被发送)。

如果你设法find一个黑客做,那么请张贴它。