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

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

我已尝试使用How does one set SSL ciphers when using CFSocket/CFStream in Cocoa?和邮件列表消息CFNetwork SSL and long blocking delays中的这段代码,但我需要访问套接字数据才能获得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.

解决方法

Using SSLSetEnabledCiphers with AFNetworking to disable weak ciphers

好吧,这个引起了我的兴趣,因为它是我用其他语言做的,但不是Cocoa / CocoaTouch.它已经在我的TODO列表上了一段时间.答案是在使用NSURLConnection等高级对象时无法做到这一点.

我无法找到一种方法来弥合NSURLConnection和朋友之间的差距以及设置密码套装所需的低级别内容.如果您感兴趣,那么低级别的“最高级”是CFSocketStream.因此,工作是让NSURLConnection与CFSocketStream一起工作(或访问NSURLConnection中的CFSocketStream).

我还在Apple的Network Programming邮件列表上反映了你的问题,Jens和Quinn都证实了这一点(Quinn提供了有关CFSocketStream的信息).见Configure socket used by NSURLConnection?.

此外,如果您没有意识到,尝试修改-connection中的属性:didReceiveAuthenticationChallenge:为时已晚.当您获得身份验证质询时,握手已在进行中(即已发送ClientHello).

如果您确实设法找到了黑客,那么请发布它.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...