加密與認證 - https

1. https 與 http

https (Hyper text transfer protocol over secure socket layer), 帶安全套接層(SSL)的 http. 能夠建立一個信息安全通道, 保證數(shù)據(jù)傳輸安全, 可以通過 CA 證書來查詢網(wǎng)站認證后的真實信息.可以理解為:?HTTP+SSL/TLS

????超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務器之間傳遞信息。HTTP協(xié)議以明文方式發(fā)送內容,不提供任何方式的數(shù)據(jù)加密,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協(xié)議不適合傳輸一些敏感信息,比如信用卡號、密碼等。為了解決HTTP協(xié)議的這一缺陷,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩?,HTTPS在HTTP的基礎上加入了SSL協(xié)議,SSL依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。

????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é)議安全。


????SSL(Secure Sockets Layer 安全套接層), 及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層對網(wǎng)絡連接進行加密。

????SSL協(xié)議位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙方進行身份認證、協(xié)商加密算法、交換加密密鑰等。

SSL協(xié)議提供的服務主要有哪些

1)認證用戶和服務器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務器 (冒充風險)

2)加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取 (?竊聽風險)

3)維護數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中不被改變 (篡改風險)。

SSL協(xié)議的工作流程服務器認證階段:

1)客戶端向服務器發(fā)送一個開始信息“Hello”以便開始一個新的會話連接;

2)服務器根據(jù)客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息;

3)客戶根據(jù)收到的服務器響應信息,產(chǎn)生一個主密鑰,并用服務器的公開密鑰加密后傳給服務器;

4)服務器恢復該主密鑰,并返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。

用戶認證階段

在此之前,服務器已經(jīng)通過了客戶認證,這一階段主要完成對客戶的認證。經(jīng)認證的服務器發(fā)送一個提問給客戶,客戶則返回(數(shù)字)簽名后的提問和其公開密鑰,從而向服務器提供認證。

????SSL證書種類CFCA,GlobalSign,VeriSign ,Geotrust ,Thawte 。

域名型 https 證書(DVSSL):信任等級一般,只需驗證網(wǎng)站的真實性便可頒發(fā)證書保護網(wǎng)站;

企業(yè)型 https 證書(OVSSL):信任等級強,須要驗證企業(yè)的身份,審核嚴格,安全性更高;

增強型 https 證書(EVSSL):信任等級最高,一般用于銀行證券等金融機構,審核嚴格,安全性最高,同時可以激活綠色網(wǎng)址欄。

2. 配置證書

2.1 將. cer 證書導入項目;

可以在鑰匙串內,找到你導入的證書,單擊右鍵,導出項目,就可以導出.cer文件的證書了

2.2 設置 plist 中 transportSecurity

<key>NSAppTransportSecurity </key>

?????<dict>

? ? ? ? <key>NSAllowsArbitraryLoads</key>

? ? ? ? ?<true/>

????? </dict>


2.3 配置 AFN

支持https(校驗證書,不可以抓包):

// 1.初始化 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate;

// 2.設置證書模式

NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"];

NSData * cerData = [NSData dataWithContentsOfFile:cerPath];

manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];

// 客戶端是否信任非法證書

mgr.securityPolicy.allowInvalidCertificates = YES;

// 是否在證書域字段中驗證域名

[mgr.securityPolicy setValidatesDomainName:NO];


支持https(不校驗證書,可以抓包查看):

// 1.初始化 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 2.設置非校驗證書模式 manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; manager.securityPolicy.allowInvalidCertificates = YES;

[manager.securityPolicy setValidatesDomainName:NO];

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容