يعمل الكاكاو nsstream مع SSL ، مع Socks5 ، ولكن ليس في نفس الوقت

StackOverflow https://stackoverflow.com/questions/2595699

  •  25-09-2019
  •  | 
  •  

سؤال

عند الاتصال (إلى 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 ، ثم تطبيق هذه الإعدادات بنجاح على تدفقات In/الإخراج ، وبالتالي منحني اتصال 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)؟

الرجاء المساعدة :)

  • إيفان
هل كانت مفيدة؟

المحلول

كان الحل في مشكلة مع اتصال NSStream SSL, ، لا ينبغي علي تعيين مستوى الأمان. لقد قمت بتحرير مشاركتي أعلاه إلى حل العمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top