Man*_*Mac 8 iphone ssl cfnetwork ios afnetworking
我试图禁用一些密码(弱),如单DES,单DES 40位等.
我尝试使用这段代码如何在Cocoa中使用CFSocket/CFStream时设置SSL密码?从邮件列表消息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);
}
Run Code Online (Sandbox Code Playgroud)
任何和所有的帮助将不胜感激.
编辑:不幸的是,这是一个现有的项目,它仍然使用AFNetworking的版本1.
将 SSLSetEnabledCiphers 与 AFNetworking 结合使用来禁用弱密码
好吧,这个引起了我的兴趣,因为我用其他语言做了这件事,但不是 Cocoa/CocoaTouch。它在我的待办事项清单上已经有一段时间了。答案是,当使用像NSURLConnection.
我找不到一种方法来弥合朋友之间的差距NSURLConnection以及设置密码套装所需的低级内容。如果您有兴趣,低级内容的“最高”是CFSocketStream。所以工作就是开始NSURLConnection使用 a CFSocketStream(或访问CFSocketStream中的NSURLConnection)。
我还在 Apple 的网络编程邮件列表中反映了您的问题,Jens 和 Quinn 都证实了这一点(Quinn 提供了有关的信息CFSocketStream)。请参阅配置 NSURLConnection 使用的套接字?。
另外,如果您没有意识到这一点,尝试修改属性就为时-connection:didReceiveAuthenticationChallenge:已晚。当您收到身份验证质询时,握手已经在进行中(即ClientHello已经发送)。
如果您确实找到了一个 hack 来做到这一点,那么请发布它。
| 归档时间: |
|
| 查看次数: |
1406 次 |
| 最近记录: |