摘要:的握手階段是采用的是非對稱加密。愛麗絲確認數字證書有效,然后生成一個新的隨機數,并使用數字證書中的公鑰,加密這個隨機數,發給鮑勃。愛麗絲和鮑勃根據約定的加密方法,使用前面的三個隨機數,生成對話密鑰,用來加密接下來的整個對話過程。
簡介
超文本傳輸安全協議(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS,常稱為HTTP over TLS,HTTP over SSL或HTTP Secure)。
SSL,Secure Sockets Layer 的縮寫,1994年由網景設計的,1999 年,互聯網標準化組織接替網景公司,發布了 Transport Sockets Layer 即 TSL。
所謂 HTTPS 就是在 TCP 傳輸層和 HTTP 應用層之間加入了 TSL/SSL 層,用于加密和解密。
對稱加密
對稱加密是一種最簡答,也最快的加密解密方式。對稱,即加密和解密都是用的相同的秘鑰。常見的對稱加密方法有 DES、3DES、AES、RC5、RC6 等。 https 的傳輸階段就是采用對稱加密的 http 傳輸。
非對稱加密
加密和解密需要兩個不同的秘鑰。一般分為公鑰和私鑰,公鑰用于加密,能夠提供數字簽名的功能,可以任意向外發布;私鑰只有持有者保管,通過公鑰加密的密文在不安全的網絡上傳輸,只有私鑰持有者可以解開獲得明文(即使獲得了密文和公鑰,也無法數以年記的時間內解開)。常見的非對稱加密算法有 RSA、ElGamal、背包算法、Rabin、迪菲-赫爾曼算法、橢圓曲線加密算法。 https 的握手階段是采用的是非對稱加密。數字證書
wiki定義
用于公開密鑰基礎建設的電子文件,用來證明公開密鑰擁有者的身份。此文件包含了公鑰信息、擁有者身份信息(主體)、以及數字證書認證機構(發行者)對這份文件的數字簽名,以保證這個文件的整體內容正確無誤。電腦系統或其他用戶可以通過一定的程序核實證書上的內容,包括證書有否過期、數字簽名是否有效,如果信任簽發的機構,就可以信任證書上的密鑰,憑公鑰加密與擁有者進行可靠的通信。
申請數字證書
服務端通過非對稱加密算法生成一對公鑰和私鑰,向 Certificate Authority 即證書認證中心,簡稱 CA 提供擁有者身份信息和服務端公鑰,通過后 CA 會頒發包含服務端公鑰,擁有著身份信息和使用 CA 私鑰對證書內容的摘要進行加密的密文,即數據簽名。
如何確認數字證書有效
驗證證書是否有效
客戶端通過查看證書的有效時間,以及域名等來判斷內容是否有效。
驗證證書是否可信
客戶端通過預存的相對應的 CA 根證書的公鑰,對數字簽名進行解密獲取證書的摘要與通過對證書內容進行哈希運算得到的摘要進行對比,相等的話則證明數字證書是該 CA 頒發的是可信的。不相等,則客戶端會提示證書不可信。原理
開始加密通信之前,客戶端和服務器首先必須建立連接和交換參數,這個過程叫做握手handshake。
假定客戶端叫做愛麗絲,服務器叫做鮑勃,整個握手過程可以用下圖說明。
握手階段分成五步。
愛麗絲給出協議版本號、一個客戶端生成的隨機數Client random,以及客戶端支持的加密方法。
鮑勃確認雙方使用的加密方法,并給出數字證書、以及一個服務器生成的隨機數Server random。
愛麗絲確認數字證書有效,然后生成一個新的隨機數Premaster secret,并使用數字證書中的公鑰,加密這個隨機數,發給鮑勃。
鮑勃使用自己的私鑰,獲取愛麗絲發來的隨機數,即Premaster secret。
愛麗絲和鮑勃根據約定的加密方法,使用前面的三個隨機數,生成對話密鑰 session key,用來加密接下來的整個對話過程。
為什么一定要用三個隨機數來生成對話密鑰,我們來看下面的解釋
不管是客戶端還是服務器,都需要隨機數,這樣生成的密鑰才不會每次都一樣。由于SSL協議中證書是靜態的,因此十分有必要引入一種隨機因素來保證協商出來的密鑰的隨機性。
對于RSA密鑰交換算法來說,Premaster secret本身就是一個隨機數,再加上hello消息中的隨機,三個隨機數通過一個密鑰導出器最終導出一個對稱密鑰。
Premaster secret的存在在于SSL協議不信任每個主機都能產生完全隨機的隨機數,如果隨機數不隨機,那么cPremaster secret就有可能被猜出來,那么僅適用 Premaster secret 作為密鑰就不合適了,因此必須引入新的隨機因素,那么客戶端和服務器加上Premaster secret 三個隨機數一同生成的密鑰就不容易被猜出了,一個偽隨機可能完全不隨機,可是是三個偽隨機就十分接近隨機了,每增加一個自由度,隨機性增加的可不是一。
Let"s Encrypt 是一個免費的,自動化的,開放的 CA 機構。通過 certbot ,選擇相應的web服務和服務器版本,就可以很快的安裝 nginx 的插件和證書。下面以 ubuntu 和 nginx 為例。
安裝源及軟件
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-get install python-certbot-nginx
安裝證書
$ sudo certbot --nginx certonly # 不加 certonly,可以自動配置 nginx,省略下一步
配置 NGINX
在相應的 server 模塊中加入如下配置
{ #省略部分配置...; listen 443; ssl on; ssl_certificate /path/to/server.crt; # 證書路徑 ssl_certificate_key /path/to/server.key; # 私鑰路徑 }
重新生成證書
$ sudo certbot renew --dry-run參考
wikipedia https
wikipedia ssl/tsl
SSL/TLS協議運行機制的概述
圖解SSL/TLS協議
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11253.html
摘要:三性能測試工具官網介紹騰訊開源的的隨身調測平臺,支持和。官網介紹騰訊游戲部門開發的移動全平臺性能測試分析工具平臺。百度的服務目前主要為收費服務。 隨著移動互聯網的高速發展,App 應用非常火,測試工程師也會接觸到各種 app 應用。除了人工測試之外,也可以通過一些測試工具來提高我們的測試效率...
摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。背后的故事本文是對于年之間世界發生的大事件的詳細介紹,闡述了從提出到角力到流產的前世今生。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎...
摘要:而源碼解析系列文章則是會從源碼層面給大家抽絲剝繭,讓大家知道我們內部到底是如何實現的。我們希望通過該源碼解析系列,能讓大家對有一個更深刻的理解。 作者:唐劉 TiKV 是一個支持事務的分布式 Key-Value 數據庫,有很多社區開發者基于 TiKV 來開發自己的應用,譬如 titan、tidis。尤其是在 TiKV 成為 CNCF 的 Sandbox 項目之后,吸引了越來越多開發者的...
摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。它能夠為我們提供類似于預處理器命名空間等多方面的輔助。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID:f...
閱讀 1637·2021-09-26 09:55
閱讀 1371·2021-09-23 11:22
閱讀 2724·2021-09-06 15:02
閱讀 2639·2021-09-01 11:43
閱讀 3951·2021-08-27 13:10
閱讀 3675·2021-08-12 13:24
閱讀 2069·2019-08-30 12:56
閱讀 2991·2019-08-30 11:22