# 1.6 HTTPS
## 1.6 HTTPS
HTTPS即HTTP over Transport Layer Security,亦稱HTTP over SSL或HTTP Secure,簡單說就是加密的HTTP。因為HTTP本身并不安全,通過它傳輸敏感信息(如用戶密碼等),很容易被傳輸路徑上的第三者(如代理服務器等)截獲而泄露,所以就有了HTTPS,用以加密傳輸。
啟用HTTPS需要在服務器端做一些設置,包括購買/獲得一個SSL證書(certificate)——它是服務器的身份證,有了它才能進行加密傳輸。
關于SSL證書需要注意的是:
- 證書由一個權威機構(Certificate Authority,簡稱CA)提供,并有一定時效(一般以年為單位),過期失效
- 證書提供一對密鑰:公鑰和私鑰。服務器對外發布公鑰以聲明自己的身份,但私鑰只有自己能讀取,用來證實自己的身份(后祥)
瀏覽器在訪問一個HTTPS站點時,首先通過一個“握手”(handshake)過程得到一個密鑰(并非前述的公鑰/私鑰),然后通過這個密鑰加密此后的HTTP傳輸。握手的過程如下(中間如有任何一步失敗則握手失敗):
1. 瀏覽器訪問一個HTTPS站點,如<https://githuber.cn/>
2. 服務器返回一個證書,包含服務器的公鑰
3. 瀏覽器通過CA驗證證書的有效性
4. 瀏覽器生成一個隨機的字符串做密鑰,并用服務器的公鑰加密它,然后把它發送給服務器
5. 服務器用私鑰解密瀏覽器發來的加密密鑰
6. 此后的通信開始使用這個密鑰進行加/解密
另外:
- 用公鑰加密的密文只有用私鑰才能解開,這屬于一種“非對稱加密”方法
- 以上第6步中的密鑰是一種“對稱”密鑰:使用同一把密鑰進行加密和解密
更多關于HTTPS可參考:<https://en.wikipedia.org/wiki/HTTPS>
- 前言
- 1 Web概述
- 1.1 什么是Web
- 1.2 超文本和超鏈接
- 1.3 URL
- 1.4 DNS
- 1.5 HTTP
- 1.5.1 客戶端請求
- 1.5.2 服務器應答
- 1.5.3 進一步了解HTTP
- 1.6 HTTPS
- 2 Web瀏覽器
- 2.1 HTML
- 2.1.1 文檔類型聲明
- 2.1.2 標簽和屬性
- 2.1.3 文檔結構
- 2.1.4 DOM
- 2.1.5 進一步了解HTML
- 2.2 CSS
- 2.2.1 樣式與樣式表
- 2.2.2 樣式表語法
- 2.2.3 級聯樣式表
- 2.2.4 進一步了解CSS
- 2.3 JavaScript
- 2.3.1 script標簽
- 2.3.2 操縱DOM
- 2.3.3 jQuery
- 2.3.4 進一步了解JavaScript
- 2.4 Ajax
- 2.5 移動設備與響應式Web設計
- 3 Web服務器
- 3.1 方法與資源
- 3.2 狀態代碼
- 3.3 靜態內容與動態內容
- 3.4 編程語言與技術
- 3.4.1 CGI
- 3.4.2 PHP
- 3.4.3 Java
- 3.4.4 Python
- 3.4.5 Ruby
- 3.4.6 Node.js
- 3.5 RESTful Web API
- 3.6 服務器架構
- 3.7 Web緩存
- 3.8 服務器推送
- 4 數據庫
- 4.1 關系型數據庫
- 4.2 NoSQL數據庫
- 5 Web服務器的其他組件
- 5.1 Cron
- 5.2 消息隊列
- 5.3 郵件服務器
- 6 開發工具與技術
- 6.1 Git
- 6.1.1 Git基礎操作
- 6.1.2 Git基本原理
- 6.1.3 進一步了解Git
- 6.2 敏捷開發