ios下https代理访问证书问题

在ios下,需要打开https链接,但是如果其中使用了代理访问,则会被默认返回证书验证错误,无法正常访问

通常是在国内访问国外facebook的情况下

这是因为

https访问的时候,会验证一次证书,如果用了代理,证书验证的时候会被认为有风险,则会拒绝掉连接

也就是为了避免中间人攻击而做的限制

这里可以考虑先用NSURLConnection创建一个https连接,让本次针对目标地址的连接在验证时忽略证书,就可以保证之后的连接再也没证书验证问题了

           NSString* strUrl = [NSString stringWithFormat:@https://graph.facebook.com/me];
           NSURLRequest* reqUrl = [NSURLRequest requestWithURL:[NSURL URLWithString:strUrl]];
           NSURLConnection* conn = [NSURLConnection connectionWithRequest:reqUrl delegate:self];
           [conn start];

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"connection didFailWithError result: %@", error);
}
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection
{
    return NO;
}

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

   //第一次验证通过,之后取消验证

    if ([challenge previousFailureCount] ==0)

    {
        NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];        [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
    }
    else
    {
        [[challenge sender] cancelAuthenticationChallenge:challenge];
    }
}

// Deprecated authentication delegates.
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

   //第一次验证通过,之后取消验证
    if ([challenge previousFailureCount] ==0)

    {
        NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];          [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];    }
    else
    {
        [[challenge sender] cancelAuthenticationChallenge:challenge];
    }
}
- (void)connection:(NSURLConnection *)connection didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    //做你需要做的事情

}

不过这个最好看看最新的sdk支不支持了。。

时间: 2024-11-04 23:04:11

ios下https代理访问证书问题的相关文章

CentOS6.5 下在Nginx中添加SSL证书以支持HTTPS协议访问

参考文献: 1. NginxV1.8.0安装与配置 2. CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问 3. nginx配置ssl证书的方法 4.nginx强制使用https访问(http跳转到https) 5.nginx ssl 107 (net::ERR_SSL_PROTOCOL_ERROR) 无法与服务器建立安全连接 解决方法 配置过程如下: 我的nginx是 yum 安装 具体安装过程参考:[转]CENTOS 6.5 配置YUM安装NGINX+服务器负载均衡 一.安

Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

文章来源:http://blog.csdn.net/jiftlixu/article/details/11676081 http://www.cnblogs.com/zhongweiv/archive/2013/01/07/https.html 目录 配置环境 了解HTTPS 配置CA证书服务器 新建示例网站并发布在IIS 新建自签名证书并配置HTTPS 故障排除 其它机器无法通过访问 配置环境 Windows版本:Windows Server 2008 R2 Enterprise Servic

iOS开发HTTPS实现之信任SSL证书和自签名证书

iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字数1566 阅读5025 评论76 喜欢30 首先来分析一下什么是HTTPS以及了解HTTPS对于iOS开发者的意义 HTTPS 以及SSL/TSL 什么是SSL? SSL(Secure Sockets Layer, 安全套接字层),因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点,比如

StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全

StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全 一.StartSSL个人证书登录申请 1.StartSSL官网: 1.官方首页:http://www.startssl.com/ 2.控制面板:http://www.startssl.com/?app=12 2.第一次用StartSSL,先进入控制面板,先点击注册. 3.然后是填写你的个人基本信息,以部落的经验,主要地址填写详细,StartSSL会根据你的IP自动填入你所在的地址. 4.提交后你的邮箱会收到一个验证码. 5.用这

局域网下通过代理实现服务器的互联网访问

背景 局域网下有两台Linux服务器,信息如下: 服务器 IP地址 操作系统 Internet访问 HOSTA 110.1.1.65 CentOS 6.7 x64 是 HOSTB 110.1.1.215 CentOS 6.7 x64 否 HOSTA和HOSTB均处在局域网中,二者能够互相ping通,HOSTA开通网络策略支持互联网访问,但是HOSTB不支持,现在需要将HOSTA作为代理服务器,让HOSTB通过HOSTA实现互联网访问,主要需要HOSTB能够进行在线的软件包安装(yum和pip)

nginx反向代理批量实现https协议访问

我们进入大多数HTTPS网站ie浏览器都会给出相关提醒了,但我配置了一台HTTPS代理机器发现css与js都加载不了,这个有朋友说是https页面,如果加载http协议的内容,会被认为页面不安全,所以就会弹出提醒框了. HTTPS是什么 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要

【转】Linux下nginx配置https协议访问的方法

一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 如下所示: configure arguments: --prefix=/usr/local/nginx --with-google_perftools_module --without-http_memcached_module --user=www --group=www --

win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)

原文:http://www.cnblogs.com/naniannayue/archive/2012/11/19/2776948.html 要想成功架设SSL安全站点关键要具备以下几个条件. 1.需要从可信的证书办法机构CA获取服务器证书. 2.必须在WEB服务器上安装服务器证书. 3.必须在WEB服务器上启用SSL功能. 4.客户端(浏览器端)必须同WEB服务器信任同一个证书认证机构,即需要安装CA证书. 下面,我们对照上面的四部,进行一步一步的操作 1:需要从可信的证书办法机构CA获取服务器

nginx配置免费ssl证书支持https安全访问

1.自行颁发不受浏览器信任的SSL证书: HTTPS的SSL证书可以自行颁发,Linux下的颁发步骤如下: openssl genrsa -des3 -out www.aaa.com.key 1024 openssl req -new -key www.aaa.com.key -out www.aaa.com.csr openssl rsa -in www.aaa.com.key -out www.aaa.com_nopass.key Nginx.conf的SSL证书配置,使用www.aaa.c