1.服务器会给一个证书,一般为.pem格式证书

2.将.pem格式的证书转换成.cer格式的证书

打开电脑自带终端 ,进入到桌面  cd Desktop 回车回到桌面Desktop Admin$

输入命令  openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der

这句话的意思是 将你的证书.pem格式转换成.cer格式的证书

3.双击打开在钥匙串中可以看到你的这个证书  ,右键导出证书 注意存储为名字格式为  www.baidu.com

导出后,将证书拖入你的工程项目中

4.在你的网络工具类.m文件中

//  封装的网络请求工具类

#import "YYCHttpTool.h"
#import "AFNetworking.h"
#import "YYCCommon.h" /**
* 是否开启https SSL 验证
*
* @return YES为开启,NO为关闭
*/
#define openHttpsSSL YES
/**
* SSL 证书名称,仅支持cer格式。“app.bishe.com.cer”,则填“app.bishe.com”
*/
#define certificate @"baidu.com" @implementation YYCHttpTool
/**
* GET请求
*
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功
* @param failure 请求失败
*/
+(void)GET:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
// 1.创建请求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; //设置加载时间
mgr.requestSerializer.timeoutInterval = 5.0f; mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; // 加上这行代码,https ssl 验证。
if(openHttpsSSL)
{
[mgr setSecurityPolicy:[self customSecurityPolicy]];
} // 2.发送请求
[mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) { //序列化 返回dict
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil]; success(dict);
} } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}]; } /**
* POST请求
*
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功
* @param failure 请求失败
*/
+(void)POST:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{ // 1.创建请求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; //设置加载时间 mgr.requestSerializer.timeoutInterval = 5.0f; mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; // 加上这行代码,https ssl 验证。
if(openHttpsSSL)
{
[mgr setSecurityPolicy:[self customSecurityPolicy]];
} // 2.发送请求
[mgr POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) { //序列化 返回dict
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil]; success(dict);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}]; } + (AFSecurityPolicy*)customSecurityPolicy
{
// /先导入证书
NSString *cerPath = [[NSBundle mainBundle] pathForResource:certificate ofType:@"cer"];//证书的路径
NSData *certData = [NSData dataWithContentsOfFile:cerPath]; // AFSSLPinningModeCertificate 使用证书验证模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
// 如果是需要验证自建证书,需要设置为YES
securityPolicy.allowInvalidCertificates = YES; //validatesDomainName 是否需要验证域名,默认为YES;
//假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
//置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
//如置为NO,建议自己添加对应域名的校验逻辑。
securityPolicy.validatesDomainName = NO; securityPolicy.pinnedCertificates = @[certData]; return securityPolicy;
} @end

完毕

最新文章

  1. Linux基本命令(一)
  2. bzoj 3262 陌上花开
  3. linux系统中批量查找文件与文件内容的方法
  4. 百度,淘宝,腾讯三大巨头HTML页面规范分解
  5. 给Asp.Net MVC及WebApi添加路由优先级
  6. Android学习笔记(二十)——自定义内容提供器
  7. POJ 2406 Power Strings (KMP)
  8. 使用reportNG替换testNG的默认报告
  9. Ngrok 内网穿透神器(转载)
  10. Ajax获得站点文件内容实例
  11. [转]SGI STL 红黑树(Red-Black Tree)源代码分析
  12. [转]Laravel 4之验证
  13. linux修改系统时间date命令加clock -w
  14. java中try 与catch的使用
  15. [Go] golang缓冲通道实现资源池
  16. 用EPPlus 读取excel,代码出错, the given key is not present in the dictionary
  17. HttpSimpleClient连接服务器
  18. 盲刷bios
  19. LeetCode:Sqrt(x) 解题报告
  20. hdu3038(种类并查集,推荐)

热门文章

  1. android帧动画,移动位置,缩放,改变透明度等动画讲解
  2. MySQL学习笔记二:权限管理
  3. react+redux教程(三)reduce()、filter()、map()、some()、every()、...展开属性
  4. 分析Mysql 5.6的Dockerfile
  5. T-Sql(二)事务(Transaction)
  6. Servlet在启动时加载的tomcat源码(原创)
  7. POST方式提交表单时,后台接受实体如果继承了父类,将无法映射表单对应数据
  8. 如何将MyEclipse项目导入eclipse
  9. Tomcat创建HTTPS访问,java访问https
  10. rem、em、px的区别