Tag: https

NSURLConnection委托方法不被调用

我试图使用NSURLConnection的委托方法。 以下方法目前没有被调用: – (void)connectionDidFinishLoading:(NSURLConnection *)connection; – (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data; – (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; //I also want to be able to use self-signed https urls – (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace; //I also want to be able to use self-signed https urls 我目前正在使用一个同步调用,但asynchronous似乎更好,因为在我完成代码库后,我要实现它到一个iPhone应用程序,我不能让我的UI冻结。 用下面的方法responseData = [NSMutableData dataWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]]; 我得到我需要的数据,但使用asynchronous我似乎我不得不使用委托方法来获取数据。 我试图通过使用@interface myClass : NSObject<NSURLConnectionDelegate>添加委托@interface […]

隐藏来自提琴手的iOS HTTPS调用

我在我的iPhone应用程序中使用HTTPS与我自己的API进行通信。 我注意到,当我尝试在HTTPS上执行数据包嗅探时,它不会显示任何关键信息。 但是当我尝试Fiddler2,并在我的iPhone(这是由Fiddler2发出)上安装一个可信任的证书,我已经能够看到我所有的HTTPS电话! 这会造成严重的安全问题。 我已经尝试过与其他应用程序,其中一些甚至不会显示在提琴手任何东西,就好像他们保护自己不知何故! 我怎样才能保护我的申请? 谢谢 —所选解决scheme的额外信息—- 如果您正在使用AFNetworking,从版本1.1开始,您可以执行以下操作来解决问题: 将以下内容添加到您的PROJECT-Prefix.pch #define _AFNETWORKING_PIN_SSL_CERTIFICATES_ =1 确保你已经添加了安全框架,然后将其导入到AFURLConnectionOperation.m文件中 #import <CommonCrypto/CommonDigest.h> 将这个额外的function添加到文件中 -(NSString*) sha256:(NSString*)input { const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:input.length]; uint8_t digest[CC_SHA256_DIGEST_LENGTH]; CC_SHA256(data.bytes, data.length, digest); NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) [output appendFormat:@"%02x", digest[i]]; […]

HTTPS请求无法validationiOS Safari上的证书

我没有configurationHTTPS在我的域名,所以我不知道从哪里开始,这个警告提示,我只能在我的iPhone和iPad上的iOS Safari。 我从来没有在Mac Safari,Chrome,FF或IE的桌面上得到这个。 有人可以指向我的ubuntu / apache EC2服务器或我的域名提供商GoDaddy网站上的某个文件,该文件处理validation证书。

使用NSURLConnection连接到具有自签名证书的https时,kSecTrustResultRecoverableTrustFailure

我在这里看到几个问题,但没有一个帮助我。 人们主要解决的问题是重新生成服务器证书: kSecTrustResultRecoverableTrustFailure的原因是什么? 假设我需要使用自签名证书与服务器进行https连接。 我没有从服务器的任何内部数据,如其私钥。 例如,服务器是https://www.pcwebshop.co.uk/ 据我所知,我可以将客户端证书捆绑到应用程序中,并将其用于validation。 我是否可以获得有效的客户端证书,而无需从服务器获取任何内部数据? 我在这里使用了一个教程http://www.indelible.org/ink/trusted-ssl-certificates 以下是我如何获得客户端证书 openssl s_client \ -showcerts -connect "${HOST}:443" </dev/null 2>/dev/null | \ openssl x509 -outform DER >"../resources/${HOST}.der" 这是代码(几乎不变): – (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]; } – (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { if ([self shouldTrustProtectionSpace:challenge.protectionSpace]) { [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge]; } else { [challenge.sender performDefaultHandlingForAuthenticationChallenge:challenge]; […]

从https链接获取图片

我刚开始学习ios开发,我试图从网站上获得一个使用SSL的图像,当我通过浏览器(笔记本电脑)连接到网站有一个警告,说根证书不受信任,我是不是网站的所有者,但我可以完全信任它。 我第一次尝试: self.eventImage.image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:imageUrl]]]; 所以我得到这个错误 NSURLConnection / CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9807) 我试图通过启动ios web浏览器发送用户到图片链接,当他们这样做时,他们会得到一个消息,询问他们是否可以信任它,如果他们打到是图像会出现,但是我想要的图像出现在应用程序内部。 我也试图使用networking视图,但没有奏效。 这里的大部分类似的问题都build议使用这个 – (BOOL)connection:(NSURLConnection *) connection canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { return NO; //return [protectionSpace.authenticationMethod isEqualToString: // NSURLAuthenticationMethodServerTrust]; } – (void)connection:(NSURLConnection *) connection didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { NSString *imageUri =[self.detailItem objectForKey: @"image"]; NSArray *trustedHosts = [[NSArray alloc]initWithObjects:imageUri, nil]; if […]

将本地主机添加到应用传输安全性(ATS)NSExceptionDomains是否安全?

就安全性而言,是否安全地将localhost添加到ATS NSExceptionDomains以供开发使用? 在每次提交之前,从Info.plist文件中删除这些行并不是很方便(也很容易忘记)。 <dict> <key>NSExceptionDomains</key> <dict> <key>localhost</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> 另外,苹果能否因此拒绝这个应用程序?

iOS上的PhoneGap会话(cookie)

在服务器上,我们有一组JSON API。 有一个login方法来validation用户并创build用户会话。 随后调用API上的其他方法假定用户已通过身份validation。 在客户端,我们有PhoneGap和jQuery手机。 我们使用ajax调用与服务器进行通信。 在Android会话pipe理上是可以的,但是在loginiOS之后,似乎会话cookie在下次调用时不会被发回(或根本不被接受),并且服务器上的调用失败,就好像用户没有被authentication一样。 当从同一设备上的Safari进行testing时,一切正常。 在iOS 5.0和iOS 4的iPhone 4S上,iPad 2的行为也是相同的。 任何想法?

防止ios5中的自签名SSL证书

我使用基本HTTP身份validation的代码,请参阅下文。 这在IOS 5中工作正常。但现在我们将协议更改为https,我们使用假的自签名证书。 它也有效! 这似乎不安全。 有人知道你是否需要用这种方法来做某些事情来防止某些证书被接受? – (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { if ([challenge previousFailureCount] <= maxRetryCount ) { NSURLCredential *newCredential = [NSURLCredential credentialWithUser: userName password:password persistence:NSURLCredentialPersistenceForSession]; [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge]; } else { NSLog(@"Failure count %d",[challenge previousFailureCount]); } }

在iOS应用程序中从http切换到https会在发布时引发出口符合性问题

我们最近决定在今年夏天更新一些我们的应用程序,将其从http切换到https,以便遵循2017年1月发布的新的Apple指南。 转移到应用程序的唯一东西是产品信息,没有用户信息或任何东西,甚至是远程敏感的。 但是我们要尽早遵守,以免我们以后再担心。 问题是: 苹果似乎迫使我们处理美国出口合规法律,该法律要求我们获得出口商注册号(ERN)的批准,以及需要公司识别码(CIN)的SNAP-R 。 我想,我不是律师。 现在这个问题在这里得到了一些回答,但是那已经是三年多了,如果我明白发生了什么事情,那么每个与他们的应用程序build立http连接并且在美国以外的地方都可以使用的人正在经历这个。 如果是这种情况,那么我会期望一个非常清楚的解释,什么切换到https将需要大多数iOS应用程序开发人员。 然而,我没有find太多的东西,我很困惑什么是确切的要求(如果有的话)。 任何律师表示赞赏。

我如何configurationWireshark来查看HTTPSstream量?

我正在testing一个iOS应用程序,我只想看看何时发送HTTPSstream量。 我对stream量的内容不感兴趣。 我怎样才能configurationWireshark做到这一点? 这只是为了validation分析包是否正在工作。 我没有任何控制我的应用程序正在交谈的服务器。 谢谢! 编辑#1 :我目前的Wiresharkconfiguration可以看到stream量http://www.duckduckgo.com,但不是https://www.duckduckgo.com