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

    網站百科

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

    APP升級到HTTPS流程詳解

    發表日期:2016-11 文章編輯:小燈 瀏覽次數:4899

    1. 背景

    2017年1月1日起,蘋果App Store中的所有App都必須啟用 App Transport Security(ATS)安全功能。App Transport Security(應用程序安全傳輸),簡稱 ATS,是蘋果在 iOS 9 中首次推出的一項隱私安全保護功能,啟用ATS后,它會屏蔽明文HTTP資源加載,強制App通過HTTPS連接網絡服務,通過傳輸加密保障用戶數據安全。ATS在 iOS 9 中是默認開啟的,但開發者仍然可以選擇關閉 ATS,讓自己的應用通過 HTTP 連接傳輸數據。但從2017年1月1日起,這招將行不通了,所有提交到 App Store 的App必須強制開啟 ATS。

    2. 影響

    2.1 100%被拒的情況:

    • 使用自有網站的HTTP鏈接
    • 使用自有網站低于TLS1.2標準的HTTPS鏈接。

    2.2以下幾種情況是特例,不會被拒:

    • App提供流媒體服務,媒體源已經對內容進行了加密,這時只要使用蘋果的AV Foundation框架加載內容,就可以無視ATS;
    • App的內容如果有來自已知的第三方,可以暫時不用管,讓技術設置一下ATS的開關,不過最好的做法是和第三方溝通下,敦促他們所有傳輸都使用TLS1.2加密。這一條適用于微信的公眾號開發。
    • App的內容來自于不可知的第三方,比如說允許用戶通過App訪問任意網站,比如說瀏覽器app,可以忽視ATS。如果使用框架是WebKit,蘋果建議切換到Safari,否則今后可能還會有麻煩事。
    3. HTTP和HTTPS的區別:

    HTTP:當客戶端發送請求,那么服務器會直接返回數據。

    Paste_Image.png

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

    Paste_Image.png

    更加詳細的過程:
    ? ? ? ?當瀏覽器(客戶端)需要與某個安全站點建立連接時,先建立TCP連接(三次握手),然后發生 SSL會話握手。

    • 瀏覽器將通過網絡發送請求安全會話的消息(通常請求以 https 而非 http 開頭的 URL)。
    • 服務器通過發送其證書(包括公鑰)進行響應。
    • 瀏覽器將檢驗服務器的證書是否有效,并檢驗該證書是否是由其證書位于瀏覽器的數據庫中的(并且是可信的)CA 所簽發的。它還將檢驗 CA 證書是否已過期。
    • 如果證書有效,瀏覽器將生成一個==一次性的、唯一的==會話密鑰,并使用服務器的公鑰對該會話密鑰進行加密。然后,瀏覽器將把加密的會話密鑰發送給服務器,這樣服務器和瀏覽器都有一份會話密鑰。
    • 服務器可以使用其專用密鑰對消息進行解密,然后恢復會話密鑰。

    4.開始配置HTTPS

    4.1 準備工作
    • 有網站,有服務器,有域名;
    • 申請到一個 SSL 證書;
    4.2 生成證書的申請文件:

    1.先通過 openssl 工具創建一個私鑰文件mydomain.key。

    sudo openssl genrsa -des3 -out mydomain.key 1024 

    不同的證書是可能有加密位數不同的,這里用的是 1024,但有可能是 2048;
    這個 openssl 工具在 windows 和 linux 上面都可以用。

    2.然后我們通過下面的命令生成申請文件 (mydomain.csr)。

    sudo openssl req -new -key mydomain.key -out mydomain.csr 

    這個 csr 文件在向證書頒發機構申請證書的時候需要提交,需要根據上一步的私鑰才能產生,然后會需要輸入下面一系列的信息:

    Paste_Image.png

    最終生成好 csr 申請文件,就可以開始申請證書了。

    4.3 申請證書

    按驗證的類別分:

    • 域名認證(Domain Validation):認證你的域名所有權和網站,申請驗證簡單,幾分鐘即可。
    • 組織機構認證(Organization Validation):認證的域名和公司信息需要提交公司資料認證。
    • 擴展認證(Extended Validation,簡稱EV):這種證書會在瀏覽器中出現“很明顯”的綠色地址欄,給用戶的可信度最高。有安全評估保證。

    個人或小站點可用一類或二類,企業一般用二類認證,少數企業會用到EV認證。
    看了看網上SSL證書的價格,便宜的一般都是10美元左右一個子域名/每年,按不同類別、不同品牌等價格在幾十美元到幾百美元一年。比如能顯示綠色地址欄的EV證書和通配符證書貴一些。國內自己的或代理的,比國外貴不少,動輒幾千元。其實就是由可信源認證了一下,類似于辦證,用起來沒什么差別,并非越貴越好。

    國外常見的SSL提供商有:Thawte,Go Daddy,VeriSign,RapidSSL,GeoTrust(QuickSSL),StartSSL。
    StartSSL、Go Daddy的比較便宜,GeoTrust的價格適中,Thawte和VeriSign的價格較貴。

    其中StartSSL的價格是119.8美元/年
    https://www.startssl.com/

    Paste_Image.png

    Go Daddy的價格是669人民幣/年
    https://sg.godaddy.com/zh/web-security/ssl-certificate/ov-ssl-certificate

    Paste_Image.png

    最終我們會得到一個.crt證書文件。憑著手上已經注冊好的 mydomain.crt 證書和 mydomain.key 私鑰文件,就可以在我們的 http 服務上面配置 SSL 了。

    5. Nginx ****配置啟用**** SSL

    5.1 在原有的虛擬主機 server 段配置上修改端口為 443,然后加入如下三行 SSL 配置:

    server { listen 443; ssl on; ssl_certificate /var/ssl/mydomain.crt; ssl_certificate_key /var/ssl/mydomain.key; } 

    5.2新增一個 server 段偵聽同樣域名上的 80 端口,直接 301 跳轉到 https 協議上的地址:

    server { listen 80; server_name www.mydomain.com mydomain.com; rewrite ^/(.*)$ https://$host/$1 permanent; } 

    5.3然后重啟一下 Nginx,這時候會要求輸入私鑰的密碼,日后每次重啟 Nginx都需要這一步。
    至此就配置完畢了。

    參考文檔:
    SSL證書與Https應用部署小結
    HTTPS(SSL) 升級實踐手札
    iOS應用網絡安全之HTTPS
    iOS - HTTPS
    StartSSL免費SSL證書成功申請
    App上架重磅通知:App Store安全新規17年1月生效


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