Какао NSStream работает с SSL, с socks5, но не одновременно - PullRequest
0 голосов
/ 08 апреля 2010

При подключении (к FTP, сначала без SSL) я запускаю:

NSArray *objects = [NSArray arrayWithObjects:@"proxy.ip", [NSNumber numberWithInt:1080], NSStreamSOCKSProxyVersion5, @"user", @"pass", nil];
NSArray *keys = [NSArray arrayWithObjects:NSStreamSOCKSProxyHostKey, NSStreamSOCKSProxyPortKey, NSStreamSOCKSProxyVersionKey, NSStreamSOCKSProxyUserKey, NSStreamSOCKSProxyPasswordKey, nil];
NSDictionary *proxyDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

[iStream retain];
[iStream setDelegate:self];
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[iStream setProperty:proxyDictionary forKey:NSStreamSOCKSProxyConfigurationKey];
[iStream open];

то же самое для iStream. Это позволяет мне успешно подключаться через прокси socks5. Если я продолжу без setProperty: proxyDictionary ... (socks5 отключен), я скажу серверу переключиться на SSL, а затем успешно применить эти настройки к входным / выходным потокам, что даст мне соединение SSL:

NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:1];
[settings setObject:(NSString *)NSStreamSocketSecurityLevelTLSv1 forKey:(NSString *)kCFStreamSSLLevel];
// to allow selfsigned certificates:
[settings setObject:[NSNumber numberWithBool:YES] forKey:(NSString *)kCFStreamSSLAllowsAnyRoot];
[iStream retain];   
[iStream setDelegate:self];
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
CFReadStreamSetProperty((CFReadStreamRef)iStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings);
//[iStream setProperty:NSStreamSocketSecurityLevelTLSv1 forKey:NSStreamSocketSecurityLevelKey]; <-- needs to be default or unset, then it works.

то же самое для oStream. Все это прекрасно работает, если я отключаю socks5. Если я включу его (строка 7 в первом фрагменте), я потеряю контакт при применении настроек SSL.

Если бы мне пришлось угадывать, я бы подумал, что он теряет некоторые свойства при применении (ssl) «настроек»?

Пожалуйста, помогите:)

  • Evan

1 Ответ

0 голосов
/ 08 апреля 2010

Решение было в Проблема с NSStream SSL Connection , я не должен устанавливать уровень безопасности. Я отредактировал свой пост в рабочее решение.

...