相关疑难解决方法(0)

如何使用NSURLConnection连接SSL以获取不受信任的证书?

我有以下简单的代码连接到SSL网页

NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url];
[ NSURLConnection sendSynchronousRequest: urlRequest returningResponse: nil error: &error ];
Run Code Online (Sandbox Code Playgroud)

如果证书是自签名的,那么它会出错.Error Domain=NSURLErrorDomain Code=-1202 UserInfo=0xd29930 "untrusted server certificate".有没有办法将它设置为接受连接(就像在浏览器中你可以按接受)或绕过它的方法?

https objective-c ssl-certificate ios app-transport-security

299
推荐指数
9
解决办法
26万
查看次数

在iphone应用程序中使用自签名证书

我为这个冗长的问题提前道歉.我遇到了自签名SSL证书的问题,我想记录到目前为止我尝试过的所有内容.

我正在开发一个与REST服务通信的应用程序.测试服务器使用自签名的ssl证书,我可以在我的计算机上安装该证书.这是一个需要密码才能安装的.p12文件.如果未安装此证书,则对服务器的所有请求都将返回403.

.p12在Keychain中安装三个项目,一个"根证书颁发机构",一个由"根证书颁发机构"颁发的"测试用户"证书,以及一个与"测试用户"证书相关联的私钥.

我通过给自己发送.p12文件,在iPad上安装了这个证书.我点击附件,输入密码,现在我可以在Safari中访问该网站.不幸的是,由于应用程序沙盒,这还不足以让我的应用程序与REST服务进行通信.

我正在使用ASIHTTPRequest来完成与我的应用程序中的REST服务的所有通信.每个请求都是ASIHTTPRequest的子类.我发现我必须做的第一件事就是调用,[self setValidatesSecureCertificate:NO];以便它甚至可以尝试SSL连接到服务器.如果这就是我所做的,我会从服务中获得403错误代码.

现在我似乎无法弄清楚如何获得使用证书的请求.我已经尝试将这三个项目导出为单独的.cer文件,包括它们在项目中,并使用以下代码将它们添加到请求中:

NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cert" ofType:@"cer"]];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (CFDataRef)data);
...
[self setClientCertificates:[NSArray arrayWithObjects:(id)cert, ..., nil]];
Run Code Online (Sandbox Code Playgroud)

虽然使用这种方法代码执行没有问题,但我仍然得到403错误.

我甚至尝试在我的应用程序中包含.p12文件并使用相同的代码导入它.这会失败,因为SecCertificateCreateWithData返回nil.

我承认我真的不知道我在这里做什么.这一切都在我头上,任何人都可以给我的任何帮助将不胜感激.

ssl ssl-certificate asihttprequest nsurlrequest ios

34
推荐指数
1
解决办法
3万
查看次数