HTTPS SSL認證 CA 數字證書 數字簽名 一文掃盲 原理概述
2017-09-02編輯
跟蘋果打交道的開發者都會接觸到 證書、簽名、HTTPS等等東西,做了這么多年iOS開發竟然還不明白個中關系,下面我們來說一下它們是如何搞在一起的。
講解之前我們首先要知道公鑰、私鑰、非對稱加密的概念,不知道的可以百度一下。
概念解釋
數字證書:數字證書是由CA頒發的,包含有申請者的公鑰及申請者的其它信息
CA(Certificate Authority):證書認證機構,是PKI的核心。負責頒發證書、認證證書、管理已頒發證書的機關。根CA下面還有從CA(子CA,中級CA)。
數字簽名:發送方用其私鑰對原文的摘要進行加密后生成,更加詳細的分析 數字簽名是什么 和 數字簽名原理
HTTPS:HTTP的安全版。即在HTTP下加入SSL層
SSL:是為網絡通信提供安全及數據完整性的一種安全協議
他們的關系:客戶端&服務端通過CA或其子機構申請數字證書,用於HTTPS的加密通信。客戶端向服務器發送SSL連接請求,服務器返回自己的數字證書公鑰PKI,客戶端在收到公鑰后,會對其進行驗證,看是否是自己信任的CA機構所頒發,驗證OK后雙方即可開始通信。不過這僅是客戶端對服務器的單向認證,也是應用最廣泛的認證方式,因為用戶千千萬,服務器對用戶是公開的,誰都可以來訪問。如果要使用雙向認證的方式即加入服務端對客戶端的認證,就要求客戶端發送自己的數字證書給服務器,服務器也對證書進行校驗。
申請數字證書
要讓我們的客戶端/服務器支持Https協議,首先要申請數字證書,有2種途徑
- 從證書頒發機構申請(需要RMB)
- 自簽CA(免費,但不受瀏覽器信任)
申請流程
- 生成一對密鑰
- 用公鑰和用戶基本信息生成證書請求csr (很多工具可一步生成私鑰和csr)
- 從頒發機構申請證書
- 證書機構頒發pem或cer證書
參考