- 倒入.cer 證書文件
- 代碼塊(.m文件)
#import "HttpRequest.h"
#import "AFNetworking.h"
/**
* 是否開啟https SSL 驗證
*
* @return YES為開啟叛薯,NO為關閉
*/
#define openHttpsSSL YES
/**
* SSL 證書名稱褒颈,僅支持cer格式函似§撸“app.bishe.com.cer”,則填“app.bishe.com”
*/
#define certificate @"adn"
@implementation HttpRequest
+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
// 1.獲得請求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
// 2.申明返回的結(jié)果是text/html類型
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
// 3.設置超時時間為10s
mgr.requestSerializer.timeoutInterval = 10;
// 加上這行代碼驮肉,https ssl 驗證涣雕。
if(openHttpsSSL)
{
[mgr setSecurityPolicy:[self customSecurityPolicy]];
}
// 4.發(fā)送POST請求
[mgr POST:url parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObj) {
if (success) {
success(responseObj);
}
} 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的話,即服務器使用其他可信任機構(gòu)頒發(fā)的證書登淘,也可以建立連接箫老,這個非常危險,建議打開黔州。
//置為NO耍鬓,主要用于這種情況:客戶端請求的是子域名,而證書上的是另外一個域名辩撑。因為SSL證書上的域名是獨立的界斜,假如證書上注冊的域名是www.google.com仿耽,那么mail.google.com是無法驗證通過的合冀;當然,有錢可以注冊通配符的域名*.google.com项贺,但這個還是比較貴的君躺。
//如置為NO,建議自己添加對應域名的校驗邏輯开缎。
securityPolicy.validatesDomainName = NO;
securityPolicy.pinnedCertificates = @[certData];
return securityPolicy;
}
@end
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者