iphone:安全问题的REST服务器\“此服务器的证书无效(iphone: secure rest

2019-06-28 02:37发布

我想消费安全RESTful服务这给错误

错误=错误域= NSURLErrorDomain代码= -1202“此服务器的证书无效。您可能正在连接到一个伪装成是服务器‘xxx.xxx.xxx.xxx’,它可以把您的机密信息处于危险之中。”

上的Xcode 4.2的工作,哪里是错误或丢失的任何步骤。

使用下面的代码

RegisterUser.f

@interface RegisterUser : UIViewController<UITextFieldDelegate,
UIScrollViewDelegate, NSURLConnectionDelegate>

RegisterUser.m

- (IBAction)SubmitBtnAction:(id)sender {

    NSURL *url = [NSURL URLWithString:@"https://xx.xx.xx.xxx:8223/jaxrs/tunedoorgateway/getCountries"];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

    [NSURLConnection sendAsynchronousRequest:urlRequest queue:[[NSOperationQueue alloc] init]
     completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
     {

         if ([data length] >0 && error == nil)
         {
             NSLog(@"Data = %@", data);
             // DO YOUR WORK HERE

         }
         else if ([data length] == 0 && error == nil)
         {
             NSLog(@"Nothing was downloaded.");
         }
         else if (error != nil){
             NSLog(@"Error = %@", error);
         }

     }];

}


- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
    NSLog(@"This is canAuthenticateAgainstProtectionSpace");
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}


- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
//    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
//        if ([trustedHosts containsObject:challenge.protectionSpace.host])
            [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];

    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
    NSLog(@"This is didReceiveAuthenticationChallenge");
  //  [[challenge sender] cancelAuthenticationChallenge:challenge];
}

Answer 1:

我觉得这可能是因为DNS的。 喜欢你的服务器东西是不注册或者一些。

尝试使用这个发展的目的─

编辑:

创建“的NSURLRequest + NSURLRequestSSLY.h”的文件,这些行添加到它

#import <Foundation/Foundation.h>

@interface NSURLRequest (NSURLRequestSSLY)
+(BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;

@end

创建“的NSURLRequest + NSURLRequestSSLY.m”的文件,这些行添加到它

#import "NSURLRequest+NSURLRequestSSLY.h"

@implementation NSURLRequest (NSURLRequestSSLY)
+(BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host
{
    return YES;
}

@end

而且不要忘了删除它为您的应用程序可能会被拒绝。



Answer 2:

该故障是不是在你的代码。 您正在使用HTTPS服务器不提供已知证书。 如果你有自己的设置,你必须去从由iOS和大多数其他操作系统信任的大认证机构之一买烧焦证书的服务器。

对于开发目的,您可以通过忽略非受信任的证书测试您的REST服务。 按照本指南做这件事: http://www.cocoanetics.com/2009/11/ignoring-certificate-errors-on-nsurlrequest/

但在生产中使用,我建议你不要使用此方法,因为它会带来安全漏洞到您的应用程序。 如果你忽略了安全性,你也可以只使用HTTP,而不是HTTPS。



Answer 3:

我尝试了好几种方式,发现它与苹果开发者中心的证书相关。 升级你的配置,然后重试。 我曾尝试与发布的iPad,iPhone 5和5S,但iPhone 4的数据当我有更新我的配置和安装在我的iPhone 4,可与现在的问题。



文章来源: iphone: secure restfull server \"The certificate for this server is invalid