1.https簡單說明
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道注簿,簡單講是HTTP的安全版熄云。
即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系蜻拨。用于安全的HTTP數(shù)據(jù)傳輸。
https: URL表明它使用了HTTP桩引,但HTTPS存在不同于HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)缎讼。
2.HTTPS和HTTP的區(qū)別主要為以下四點:
一、https協(xié)議需要到ca申請證書坑匠,一般免費證書很少血崭,需要交費。
二厘灼、http是超文本傳輸協(xié)議功氨,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議手幢。
三捷凄、http和https使用的是完全不同的連接方式,用的端口也不一樣围来,前者是80跺涤,后者是443。
四监透、http的連接很簡單桶错,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構建的可進行加密傳輸胀蛮、身份認證的網(wǎng)絡協(xié)議院刁,比http協(xié)議安全。
3.簡單說明
1)HTTPS的主要思想是在不安全的網(wǎng)絡上創(chuàng)建一安全信道粪狼,并可在使用適當?shù)募用馨头掌髯C書可被驗證且可被信任時退腥,對竊聽和中間人攻擊提供合理的保護。
2)HTTPS的信任繼承基于預先安裝在瀏覽器中的證書頒發(fā)機構(如VeriSign再榄、Microsoft等)(意即“我信任證書頒發(fā)機構告訴我應該信任的”)狡刘。
3)因此,一個到某網(wǎng)站的HTTPS連接可被信任困鸥,如果服務器搭建自己的https 也就是說采用自認證的方式來建立https信道嗅蔬,這樣一般在客戶端是不被信任的。
4)所以我們一般在瀏覽器訪問一些https站點的時候會有一個提示,問你是否繼續(xù)澜术。
4.關于.pem轉換為.cer
1)如果后臺給你的公鑰是.pem文件的話艺蝴,你需要將它轉換為.cer的文件,并將它導入你項目的bundle
里鸟废,在終端里轉換的命令如下:
openssl x509 -in <你的服務器證書>.pem -outform der -out server.cer
2)關于Afn 3.0請求數(shù)據(jù)配置吴趴;
AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];
manager.responseSerializer =[AFHTTPResponseSerializer serializer];
manager.requestSerializer =[AFHTTPRequestSerializer serializer];
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"你的證書" ofType:@"cer"];
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
NSSet *cerSet = [[NSSet alloc] initWithObjects:cerData, nil];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
[securityPolicy setAllowInvalidCertificates:YES];
[securityPolicy setPinnedCertificates:cerSet];
securityPolicy.validatesDomainName = NO;
3)關于info.plist的配置:
1.在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設為no:
4)關于https加載http的網(wǎng)頁:
1.在其內添加一個Key: Exception Domains,類型為Dictionary;
2.在Exception Domains內添加要支持的域侮攀,其中域作為Key,類型為Dictionary;
3.每個域下面需要設置3個屬性:類型為Boolean;
NSIncludesSubdomains ?YES
NSExceptionRequiresForwardSecrecy ?NO
NSExceptionAllowsInsecureHTTPLoads ?YES
如圖所示: