## 什么是 HTTPS?
HTTPS (基于安全套接字層的超文本傳輸協議 或者是 HTTP over SSL) 是一個 Netscape 開發的 Web 協議。
你也可以說:HTTPS = HTTP + SSL
HTTPS 在 HTTP 應用層的基礎上使用安全套接字層作為子層。
## 為什么需要 HTTPS ?
超文本傳輸協議 (HTTP) 是一個用來通過互聯網傳輸和接收信息的協議。HTTP 使用請求/響應的過程,因此信息可在服務器間快速、輕松而且精確的進行傳輸。當你訪問 Web 頁面的時候你就是在使用 HTTP 協議,但 HTTP 是不安全的,可以輕松對竊聽你跟 Web 服務器之間的數據傳輸。在很多情況下,客戶和服務器之間傳輸的是敏感歇息,需要防止未經授權的訪問。為了滿足這個要求,網景公司(Netscape)推出了HTTPS,也就是基于安全套接字層的 HTTP 協議。
## HTTP 和 HTTPS 的相同點
大多數情況下,HTTP 和 HTTPS 是相同的,因為都是采用同一個基礎的協議,作為 HTTP 或 HTTPS 客戶端——瀏覽器,設立一個連接到 Web 服務器指定的端口。當服務器接收到請求,它會返回一個狀態碼以及消息,這個回應可能是請求信息、或者指示某個錯誤發送的錯誤信息。系統使用統一資源定位器 URI 模式,因此資源可以被唯一指定。而 HTTPS 和 HTTP 唯一不同的只是一個協議頭(https)的說明,其他都是一樣的。
## HTTP 和 HTTPS 的不同之處
1. HTTP 的 URL 以 http:// 開頭,而 HTTPS 的 URL 以 https:// 開頭
2. HTTP 是不安全的,而 HTTPS 是安全的
3. HTTP 標準端口是 80 ,而 HTTPS 的標準端口是 443
在 OSI 網絡模型中,HTTP 工作于應用層,而 HTTPS 工作在傳輸層
4. HTTP 無需加密,而 HTTPS 對傳輸的數據進行加密
5. HTTP 無需證書,而 HTTPS 需要認證證書
## HTTPS 如何工作?
使用 HTTPS 連接時,服務器要求有公鑰和簽名的證書。
當使用 https 連接,服務器響應初始連接,并提供它所支持的加密方法。作為回應,客戶端選擇一個連接方法,并且客戶端和服務器端交換證書驗證彼此身份。完成之后,在確保使用相同密鑰的情況下傳輸加密信息,然后關閉連接。為了提供 https 連接支持,服務器必須有一個公鑰證書,該證書包含經過證書機構認證的密鑰信息,大部分證書都是通過第三方機構授權的,以保證證書是安全的。
換句話說,HTTPS 跟 HTTP 一樣,只不過增加了 SSL。
#### HTTP 包含如下動作:
瀏覽器打開一個 TCP 連接
瀏覽器發送 HTTP 請求到服務器端
服務器發送 HTTP 回應信息到瀏覽器
TCP 連接關閉
#### SSL 包含如下動作:
驗證服務器端
允許客戶端和服務器端選擇加密算法和密碼,確保雙方都支持
驗證客戶端(可選)
使用公鑰加密技術來生成共享加密數據
創建一個加密的 SSL 連接
基于該 SSL 連接傳遞 HTTP 請求
#### 什么時候該使用 HTTPS?
銀行網站、支付網關、購物網站、登錄頁、電子郵件以及一些企業部門的網站應該使用 HTTPS,例如:
PayPal: https://www.paypal.com
Google AdSense: https://www.google.com/adsense/
如果某個網站要求你填寫信用卡信息,首先你要檢查該網頁是否使用 https 加密連接,如果沒有,那么請不要輸入任何敏感信息如信用卡號。
- 空白目錄
- 自我介紹
- Android面試題
- Handler
- 網絡請求框架
- 圖片處理框架Picasso,Glide
- Android最佳性能實踐OOM
- 異步:RxJava,AsyncTask
- View,ViewGroup事件分發
- 消息傳遞:EventBus
- HTTPS和HTTP的區別
- 進程間通信的方式
- HttpClient與HttpUrlConnection的區別
- 性能優化
- Java多線程
- Fragment狀態保持和恢復
- 講解一下Context
- JNI
- java虛擬機和Dalvik虛擬機的區別
- 線程sleep和wait有什么區別
- 保存Activity狀態
- WebView與js交互(調用哪些API)
- 內存泄露檢測,內存性能優化
- 布局優化
- 自定義view和動畫
- 設計模式(單例,工廠,觀察者。作用,使用場景)
- String,Stringbuffer,Stringbuilder 區別
- 開源框架,為什么使用,與別的有什么區別
- Android大廠面試題
- 愛奇藝
- 小米
- 騰訊
- 阿里
- 今日頭條
- 共同問到的
- 其他問題
- 框架MVC、MVP、MVVM
- sleep和wait有什么區別
- React Native原理
- React Native面試題
- 數據結構
- Android開發
- 基礎知識
- Java基礎
- 數據結構
- 面向對象思想
- 設計模式
- 開發環境
- Android SDK
- Activity
- Service
- Broadcastreceiver
- Contentprovider
- ActionBar
- Fragment
- UI
- 通信
- 數據持久化
- 性能
- 調試
- 適配
- 測試
- 安全
- NDK
- 手機功能
- 第三方擴展
- 其他
- 2018 Java面試題
- Android(2017-2018)BAT面試題整理
- 2017下半年,一二線互聯網公司Android面試題匯總
- 2018阿里Android面試題
- 一面
- 二面
- 三面