iOS ASIHTTPRequest用https协议加密请求

iOS 终端请求服务端数据时,为了保证数据安全,我们一般会使用https协议加密,而对于iOS的网络编程,我们一般会使用开源框架:ASIHTTPRequest,但是如果使用传统的http方式,即使忽略验证的话,程序也会报[error-9844]的错误,具体错误如下描述:

Error
Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occurred"
UserInfo=0x6aafa30 {NSUnderlyingError=0x6a3fd90 "The operation couldn’t be
completed. (OSStatus error -9844.)", NSLocalizedDescription=A connection failure
occurred}

那么该如何解决该问题呢?经过查找解决方案如下:

解决方案1

1)      [request setValidatesSecureCertificate:NO];

2)      在ASIHTTPRequest.m文件中查找”https”,向sslProperties字典中增加kCFStreamSSLLevel对象,网上的参考方法:

[sslProperties setObject:(NSString *)(CFStringRef*)kCFStreamSocketSecurityLevelSSLv3 forKey:(NSString*)kCFStreamSSLLevel];

但是,sslProperties字典并非可变字典,所以你需要将sslProperties修改为可变字典NSMutableDictionary。

解决方案2

如果需要更加灵活的对SSL security
level进行设置,可以将CFStringRef*sslSecurityLevel作为变量提到ASIHTTPRequest.h文件的property中,具体操作如下:

1)      在ASIHTTPRequest.h的文件中添加声明:

CFStringRef *sslSecurityLevel;

2)      在ASIHTTPRequest.h的文件中添加CFStringRef属性:

@property (assign) CFStringRef *sslSecurityLevel;

3)      在ASIHTTPRequest.m的文件中添加CFStringRef属性:

@synthesize sslSecurityLevel;

4)      在ASIHTTPRequest.m的文件修改:

NSDictionary *sslProperties =
[[NSDictionary alloc]initWithObjectsAndKeys:??,将不可变字典更改为可变字典(NSMutableDictionary),即:

NSMutableDictionary *sslProperties =
[[NSMutableDictionary alloc]initWithObjectsAndKeys:??

5)      在4)修改语句结束的地方添加设置SSL
security level的代码:

//
Use requested SSL security level

if ([self sslSecurityLevel]
!= nil) {

[sslProperties setObject:(NSString *)[self sslSecurityLevel] forKey:(NSString *)kCFStreamSSLLevel];

}

6)      在调用请求的request中做如下设置:

[request setValidatesSecureCertificate:NO];

[request setSslSecurityLevel:(CFStringRef*)kCFStreamSocketSecurityLevelSSLv3];

iOS ASIHTTPRequest用https协议加密请求,布布扣,bubuko.com

时间: 2024-10-25 22:15:01

iOS ASIHTTPRequest用https协议加密请求的相关文章

IOS 采用https 协议访问接口

申请好证书后,发现ios 仍无法使用https协议访问到数据,发现ios 需要ssl 支持 TLS1.2 . 更改nginx 配置: ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA

ASIHTTPRequest实现https双向认证请求

什么是双向认证呢?简而言之,就是服务器端对请求它的客户端要进行身份验证,客户端对自己所请求的服务器也会做身份验证.服务端一旦验证到请求自己的客户端为不可信任的,服务端就拒绝继续通信.客户端如果发现服务端为不可信任的,那么也中止通信. 双向认证的算法理论是RSA,(点击此处了解RSA算法原理). 双向认证具体又是通过安全证书的方式来实现的,安全证书可用openssl或java程序来生成,用于双向认证的安全证书中保存了密钥对,证书颁发机构信 息,签名信息,签名算法,颁发对象,有效期等信息.双向认证中

iOS ASIHTTPRequest 请求https

iOS 终端请求服务端数据时,为了保证数据安全,我们一般会使用https协议加密,而对于iOS的网络编程,我们一般会使用开源框架:ASIHTTPRequest,但是如果使用传统的http方式,即使忽略验证的话,程序也会报[error-9844]的错误,具体错误如下描述: [Error Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occurred" UserInfo=0x6aafa30 {NSUnderlyi

获取URL列表,设置代理请求URL,https的加密方式处理

做了一个测试的一个小工具,需求如下: 1.有一批URL列表,需要知道哪个URL请求响应内容中包含http:关键字的. 2.url请求包括http和https 2种协议 3.要部署在linux服务器上,且linux服务器只能通过代理来连接外网 帖一下我的核心代码吧: package com.cn.util; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader;

理解 HTTPS 协议

英文原文:Understanding HTTPS Protocol 最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏,你会看到如下信息 我们可以看到“https" 是绿色高亮显示,并且前面有一个锁标,表明网页请求是通过 https 协议. HTTPS 是 HTTP 协议的一个版本,在浏览器和服务器之间提供安全的数据传输. 浏览器和服务器是通过 http 协议进行通信,在使用

老李分享:https协议

老李分享:https协议 最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏,你会看到如下信息 我们可以看到“https" 是绿色高亮显示,并且前面有一个锁标,表明网页请求是通过 https 协议. HTTPS 是 HTTP 协议的一个版本,在浏览器和服务器之间提供安全的数据传输. 浏览器和服务器是通过 http 协议进行通信,在使用 HTTP 协议时,客户端向服务端提交表单数

Tomcat使用Https协议的证书申请说明书

Tomcat使用Https协议的证书申请说明书 https协议是http协议的加密版本,即https=http+ssl. 一.相关概念 SSL证书 SSL证书,就是一种安装在服务器上的数字证书.安装了SSL证书的网站,可以使用HTTPS访问,在用户浏览器和网站服务器之间建立一条“SSL加密通道”,在网上交易.网上支付时,让您的交易信息.身份信息.账号密码等机密信息加密传输,防止信息泄露. 同时,SSL证书是由权威CA机构认证网站身份后才能颁发,在证书中显示网站所属单位或个人的真实信息,并通过绿色

HTTPS协议分析

实验目的 1.https的基本概念和工作流程 2.学会捕获https封包 3.学会筛选重要的https封包 4.学会解密https数据包 实验工具 ?wireshark 实验环境 ?操作机:Windows XP 实验步骤 HTTPS的工作流程 使用HTTPS协议工作时,服务端和客户端的信息传输都会进行加密,所以传输的数据都是加密后的数据.HTTPS的工作流程如下: 1.客户端使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接. 2.Web服务器收到客户端的请求后,会将网站包

https协议的简单理解

本片文章梳理三个知识点: 1.对称加密和非对称加密的区别 2.https协议的请求流程 3.http协议和https协议的区别 一.对称加密和非对称加密 对称加密:加密和解密使用同一密钥. 非对称加密:有公钥和私钥,一般时使用公钥进行加密,使用私钥进行解密. 二.https协议的请求流程 1.客户端发送请求到达服务器,服务器返回证书到客户端(包含公钥). 2.客户端生成随机数字,并使用公钥进行加密处理,然后发送到服务器. 3.服务器收到客户端发送的数据,使用私钥进行解密,获取到随机数. 4.服务