• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網絡科技有限公司!
    電話圖標 余先生:13699882642

    網站百科

    為您解碼網站建設的點點滴滴

    蘋果https方案

    發表日期:2017-02 文章編輯:小燈 瀏覽次數:2823

    文章更新記錄:

    2017.07.12 - 添加實際應用過程錯誤記錄

    一、提出問題

    蘋果公司在2016的開發者大會上宣布:到2017年,所有的iOS應用都必須使用HTTPS與服務器進行通信。iOS開發者應該都不會對這個決定感到驚訝,因為自iOS9就已經引入了ATS(應用傳輸安全App Transport Security)特性,該特性對應用的安全傳輸做出了以下要求:

    • The protocol Transport Security Layer (TLS) must be at least version 1.2.
    • Connection ciphers are limited to those that provide forward secrecy (see the list of ciphers below.)
    • Certificates must use at least an SHA256 fingerprint with either a 2048 bit or greater RSA key, or a 256 bit or greater Elliptic-Curve (ECC) key.

    不符合以上條件的任意一項,網絡請求將會被中斷并返回空值。

    既然蘋果公司劃出了最后期限,HTTPS將成為必然,那么一個iOS開發自學者自然會提出以下問題:

    HTTPS的原理和運行機制是什么?
    為實現HTTPS通信,服務器端需要做什么?
    為實現HTTPS通信,iOS客戶端需要做什么?

    二、HTTP 與Https的區別

    這里用兩張圖來介紹兩者的區別:HTTP:當客戶端發送請求,那么服務器會直接返回數據。

    HTTPS:當客戶端第一次發送請求的時候,服務器會返回一個包含公鑰的受保護空間(也成為證書),當我們發送請求的時候,公鑰會將請求加密再發送給服務器,服務器接到請求之后,用自帶的私鑰進行解密,如果正確再返回數據。這就是 HTTPS 的安全性所在。


    這里簡介下SSL/TLS 的歷史

    1994年,NetScape公司設計了SSL協議(Secure Sockets Layer)的1.0版,但是未發布。 1995年,NetScape公司發布SSL 2.0版,很快發現有嚴重漏洞。 1996年,SSL 3.0版問世,得到大規模應用。 1999年,互聯網標準化組織ISOC接替NetScape公司,發布了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。

    二、服務器端如何實現HTTPS

    如何實現,肯定得靠自己搭建一個HTTPS服務器啊。根據網絡上的資料,可知有兩種方式來搭建HTTPS服務器:
    一種是創建證書請求,然后到權威機構認證,隨之配置到服務器;
    一種是自建證書,然后配置給服務器。

    1. 第一種方式搭建的HTTPS服務器是最優的。建立網站的話,直接就會被信任。而服務器作為移動端app的服務器時,也不需要為ATS做過多的適配正是我所需要積累知識的方向)。雖然說權威的機構認證都是需要錢的,但是如今也不乏存在免費的第三方認證機構;
    2. 第二種方式搭建的HTTPS服務器,對于網站來說完全不可行,用戶打開時直接彈出一個警告提醒,說這是一個不受信任的網站,讓用戶是否繼續,體驗很差,而且讓用戶感覺網站不安全。對于移動端來說,在iOS9出現之前,這個沒什么問題,但是在iOS9出來之后,第二種方式是通不過ATS特性,需要在info.plist文件中將App Transport Security Settings中的Allow Arbitrary Loads設置為YES才行。

    三、證書

    前有很多免費和收費 ssl的證書提供商可以供我們選擇,當然我們也可以自己作為頒發主體,制作ssl證書,不過像谷歌等瀏覽器對于不受信任的證書機構在頁面上會給提示存在安全風險,阻止訪問,這對用戶體驗來說是非常糟糕的。根據安全等級,當前ssl證書根據主要有以下幾類:

      EV - 業界頂級SSL證書,部署了EV SSL證書的網站,地址欄會變成醒目的綠色,并且顯示網站所屬企業名稱  OV - 使用較為廣泛的企業驗證型SSL證書,部署了OV SSL證書之后,地址欄會有安全鎖標識顯示  DV - 只驗證域名,快速簽發的SSL證書。也會在地址欄顯示安全鎖標識,但證書詳情里面不顯示O字段,不顯示使用者名稱,只顯示域名 

    當前受到主流瀏覽器承認的很多SSL證書機構頒發的免費證書主要也都是DV等級。

    八大免費SSL證書:給你的網站免費添加HTTPS加密

    免費Letencrypt證書部署

    這個是由國外發起的一個免費的ssl項目,現在已經得到了谷歌等主流瀏覽器的認可。從安全角度考慮,通過Letencrypt安裝的免費證書只有三個月的有效期,到期之需要重新申請,但是這也給部署造成了一定的麻煩,所以官方也提供了各種自動化的解決方案

    總結

    本文主要是對Https相關資料進行收集,證書的兩種生成方式:
    1.創建證書請求,然后到權威機構認證,隨之配置到服務器。有相關免費的證書頒發機構如Let's Encrypt 與 騰訊云
    Let's Encrypt 下面有篇文章是專門講怎么使用的。
    Let's Encrypt有效期為三個月,騰訊云有效期為1年。
    2.自建證書,然后配置給服務器。

    如騰訊云:

    Paste_Image.png

    采用第一種方案,app開發上不需要做任何修改。只要把原來的http請求改為https即可。
    采用第二種方案,網頁載入時會有不信任證書的不友好提示,app端需要更改網絡請求代碼以加入自己生成的密鑰信息。

    錯誤記錄:

    公司采用的阿里云的免費DV證書,工程將路徑由http變為https

    image.png
    請求數據失敗報一下錯誤
    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)}
    用瀏覽器直接輸入地址出現
    QQ20170712-144255@2x.png

    估計是證書不被信任導致,按照stackoverflow上的方法處理解決問題。

    AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; mgr.requestSerializer.timeoutInterval = 20.0f; AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; securityPolicy.allowInvalidCertificates = YES; mgr.securityPolicy = securityPolicy; [securityPolicy setValidatesDomainName:NO]; 

    后面問了下后臺那邊,說是證書是跟域名綁定,建議用域名直接訪問。

    image.png

    改成域名后,AF無需任何改動直接訪問即可。

    在阿里云里申請免費Https證書SSL

    參考文檔:

    iOS開發中的HTTPS
    使用Let's Encrypt手動創建https證書

    iOS開發中的HTTPS ---數字證書

    iOS開發HTTPS實現之信任SSL證書和自簽名證書

    app ATS 驗證

    IOS Https適配摸索 一篇使用openSSl自己產生證書配置文章


    本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.juherenli.com/20427.html
    相關開發語言
     八年  行業經驗

    多一份參考,總有益處

    聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

    咨詢相關問題或預約面談,可以通過以下方式與我們聯系

    業務熱線:余經理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    • QQ咨詢
    • 在線咨詢
    • 官方微信
    • 聯系電話
      座機0755-29185426
      手機13699882642
    • 預約上門
    • 返回頂部
    国产精品一区二区久久乐下载| 99久久国产宗和精品1上映| 久久精品亚洲精品国产色婷| 日本午夜精品理论片A级APP发布| 国产精品久久影院| 久久精品人人槡人妻人人玩| 国产精品99久久久久久宅男 | 99精品在线视频观看| 国产精品原创巨作?v网站| 国产精品无码无卡在线观看久 | 国产美女精品一区二区三区| 国产区香蕉精品系列在线观看不卡| 99在线精品视频观看免费| 午夜精品美女写真福利| 99久久精品影院老鸭窝| 香蕉99久久国产综合精品宅男自 | 久久国产精品免费视频| 国产一在线精品一区在线观看| 国产成人无码精品久久久露脸 | 久久久久无码国产精品不卡| 四虎影视精品永久免费| 精品丝袜人妻久久久久久| 国产精品va无码二区| 亚洲av午夜国产精品无码中文字| 麻豆一区二区三区精品视频| 久久夜色精品国产网站| 久久精品国产精品亚洲艾草网| 国自产偷精品不卡在线| 久久精品国产精品亚洲艾草网美妙| www.99精品| 亚洲精品国产V片在线观看| 国产精品久久久久久无毒不卡 | 亚洲一区二区精品视频| 视频一区二区精品的福利| 国产在线观看精品一区二区三区91| 久久精品国产亚洲av天美18| 波多野结衣久久精品| 无码国产精品久久一区免费| 久久亚洲精品无码av| 国产精品白丝喷水在线观看者相| 97视频热人人精品免费|