為您解碼網(wǎng)站建設(shè)的點點滴滴
發(fā)表日期:2017-02 文章編輯:小燈 瀏覽次數(shù):2634
2017.07.12 - 添加實際應(yīng)用過程錯誤記錄
蘋果公司在2016的開發(fā)者大會上宣布:到2017年,所有的iOS應(yīng)用都必須使用HTTPS與服務(wù)器進行通信。iOS開發(fā)者應(yīng)該都不會對這個決定感到驚訝,因為自iOS9就已經(jīng)引入了ATS(應(yīng)用傳輸安全App Transport Security)特性,該特性對應(yīng)用的安全傳輸做出了以下要求:
不符合以上條件的任意一項,網(wǎng)絡(luò)請求將會被中斷并返回空值。
既然蘋果公司劃出了最后期限,HTTPS將成為必然,那么一個iOS開發(fā)自學者自然會提出以下問題:
HTTPS的原理和運行機制是什么?
為實現(xiàn)HTTPS通信,服務(wù)器端需要做什么?
為實現(xiàn)HTTPS通信,iOS客戶端需要做什么?
這里用兩張圖來介紹兩者的區(qū)別:HTTP:當客戶端發(fā)送請求,那么服務(wù)器會直接返回數(shù)據(jù)。
HTTPS:當客戶端第一次發(fā)送請求的時候,服務(wù)器會返回一個包含公鑰的受保護空間(也成為證書),當我們發(fā)送請求的時候,公鑰會將請求加密再發(fā)送給服務(wù)器,服務(wù)器接到請求之后,用自帶的私鑰進行解密,如果正確再返回數(shù)據(jù)。這就是 HTTPS 的安全性所在。
這里簡介下SSL/TLS 的歷史
1994年,NetScape公司設(shè)計了SSL協(xié)議(Secure Sockets Layer)的1.0版,但是未發(fā)布。 1995年,NetScape公司發(fā)布SSL 2.0版,很快發(fā)現(xiàn)有嚴重漏洞。 1996年,SSL 3.0版問世,得到大規(guī)模應(yīng)用。 1999年,互聯(lián)網(wǎng)標準化組織ISOC接替NetScape公司,發(fā)布了SSL的升級版[TLS](http://en.wikipedia.org/wiki/Secure_Sockets_Layer) 1.0版。 2006年和2008年,TLS進行了兩次升級,分別為TLS 1.1版和TLS 1.2版。最新的變動是2011年TLS 1.2的[修訂版](http://tools.ietf.org/html/rfc6176)。
TLS 1.0通常被標示為SSL 3.1,TLS 1.1為SSL 3.2,TLS 1.2為SSL 3.3。
如何實現(xiàn),肯定得靠自己搭建一個HTTPS服務(wù)器啊。根據(jù)網(wǎng)絡(luò)上的資料,可知有兩種方式來搭建HTTPS服務(wù)器:
一種是創(chuàng)建證書請求,然后到權(quán)威機構(gòu)認證,隨之配置到服務(wù)器;
一種是自建證書,然后配置給服務(wù)器。
前有很多免費和收費 ssl的證書提供商可以供我們選擇,當然我們也可以自己作為頒發(fā)主體,制作ssl證書,不過像谷歌等瀏覽器對于不受信任的證書機構(gòu)在頁面上會給提示存在安全風險,阻止訪問,這對用戶體驗來說是非常糟糕的。根據(jù)安全等級,當前ssl證書根據(jù)主要有以下幾類:
EV - 業(yè)界頂級SSL證書,部署了EV SSL證書的網(wǎng)站,地址欄會變成醒目的綠色,并且顯示網(wǎng)站所屬企業(yè)名稱 OV - 使用較為廣泛的企業(yè)驗證型SSL證書,部署了OV SSL證書之后,地址欄會有安全鎖標識顯示 DV - 只驗證域名,快速簽發(fā)的SSL證書。也會在地址欄顯示安全鎖標識,但證書詳情里面不顯示O字段,不顯示使用者名稱,只顯示域名
當前受到主流瀏覽器承認的很多SSL證書機構(gòu)頒發(fā)的免費證書主要也都是DV等級。
八大免費SSL證書:給你的網(wǎng)站免費添加HTTPS加密
這個是由國外發(fā)起的一個免費的ssl項目,現(xiàn)在已經(jīng)得到了谷歌等主流瀏覽器的認可。從安全角度考慮,通過Letencrypt安裝的免費證書只有三個月的有效期,到期之需要重新申請,但是這也給部署造成了一定的麻煩,所以官方也提供了各種自動化的解決方案
本文主要是對Https相關(guān)資料進行收集,證書的兩種生成方式:
1.創(chuàng)建證書請求,然后到權(quán)威機構(gòu)認證,隨之配置到服務(wù)器。有相關(guān)免費的證書頒發(fā)機構(gòu)如Let's Encrypt 與 騰訊云
Let's Encrypt 下面有篇文章是專門講怎么使用的。
Let's Encrypt有效期為三個月,騰訊云有效期為1年。
2.自建證書,然后配置給服務(wù)器。
如騰訊云:
采用第一種方案,app開發(fā)上不需要做任何修改。只要把原來的http請求改為https即可。
采用第二種方案,網(wǎng)頁載入時會有不信任證書的不友好提示,app端需要更改網(wǎng)絡(luò)請求代碼以加入自己生成的密鑰信息。
公司采用的阿里云的免費DV證書,工程將路徑由http變?yōu)閔ttps
Error: Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLKey=[https://localhost:4443/api/v0/login/salt](https://localhost:4443/api/v0/login/salt), NSLocalizedDescription=cancelled, NSErrorFailingURLStringKey=[https://localhost:4443/api/v0/login/salt](https://localhost:4443/api/v0/login/salt)}
估計是證書不被信任導致,按照stackoverflow上的方法處理解決問題。
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; mgr.requestSerializer.timeoutInterval = 20.0f; AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; securityPolicy.allowInvalidCertificates = YES; mgr.securityPolicy = securityPolicy; [securityPolicy setValidatesDomainName:NO];
后面問了下后臺那邊,說是證書是跟域名綁定,建議用域名直接訪問。
改成域名后,AF無需任何改動直接訪問即可。
在阿里云里申請免費Https證書SSL
iOS開發(fā)中的HTTPS
使用Let's Encrypt手動創(chuàng)建https證書
iOS開發(fā)中的HTTPS ---數(shù)字證書
iOS開發(fā)HTTPS實現(xiàn)之信任SSL證書和自簽名證書
app ATS 驗證
IOS Https適配摸索 一篇使用openSSl自己產(chǎn)生證書配置文章
日期:2018-04 瀏覽次數(shù):6774
日期:2017-02 瀏覽次數(shù):3448
日期:2017-09 瀏覽次數(shù):3674
日期:2017-12 瀏覽次數(shù):3542
日期:2018-12 瀏覽次數(shù):4839
日期:2016-12 瀏覽次數(shù):4592
日期:2017-07 瀏覽次數(shù):13658
日期:2017-12 瀏覽次數(shù):3522
日期:2018-06 瀏覽次數(shù):4278
日期:2018-05 瀏覽次數(shù):4454
日期:2017-12 瀏覽次數(shù):3568
日期:2017-06 瀏覽次數(shù):3993
日期:2018-01 瀏覽次數(shù):3957
日期:2016-12 瀏覽次數(shù):3922
日期:2018-08 瀏覽次數(shù):4439
日期:2017-12 瀏覽次數(shù):3726
日期:2016-09 瀏覽次數(shù):6443
日期:2018-07 瀏覽次數(shù):3220
日期:2016-12 瀏覽次數(shù):3240
日期:2018-10 瀏覽次數(shù):3392
日期:2018-10 瀏覽次數(shù):3501
日期:2018-09 瀏覽次數(shù):3591
日期:2018-02 瀏覽次數(shù):3609
日期:2015-05 瀏覽次數(shù):3536
日期:2018-09 瀏覽次數(shù):3316
日期:2018-06 瀏覽次數(shù):3444
日期:2017-02 瀏覽次數(shù):3882
日期:2018-02 瀏覽次數(shù):4346
日期:2018-02 瀏覽次數(shù):4190
日期:2016-12 瀏覽次數(shù):3586
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.