SSL雙向認證和SSL單向認證的區別

雙向認證 SSL 協議要求服務器和用戶雙方都有證書。單向認證 SSL 協議不需要客戶擁有CA證書,具體的過程相對于上面的步驟,只需將服務器端驗證客戶證書的過程去掉,以及在協商對稱密碼方案,對稱通話密鑰時,服務器發送給客戶的是沒有加過密的(這并不影響 SSL 過程的安全性)密碼方案。這樣,雙方具體的通訊內容,就是加過密的數據,如果有第三方攻擊,獲得的只是加密的數據,第三方要獲得有用的信息,就需要對加密的數據進行解密,這時候的安全就依賴于密碼方案的安全。而幸運的是,目前所用的密碼方案,只要通訊密鑰長度足夠的長,就足夠的安全。這也是我們強調要求使用128位加密通訊的原因。
一般Web應用都是采用SSL單向認證的,原因很簡單,用戶數目廣泛,且無需在通訊層對用戶身份進行驗證,一般都在應用邏輯層來保證用戶的合法登入。但如果是企業應用對接,情況就不一樣,可能會要求對客戶端(相對而言)做身份驗證。這時就需要做SSL雙向認證。

SSL單向認證具體過程

  • ①客戶端的瀏覽器向服務器傳送客戶端SSL協議的版本號,加密算法的種類,產生的隨機數,以及其他服務器和客戶端之間通訊所需要的各種信息。

  • ②服務器向客戶端傳送SSL協議的版本號,加密算法的種類,隨機數以及其他相關信息,同時服務器還將向客戶端傳送自己的證書。

  • ③客戶利用服務器傳過來的信息驗證服務器的合法性,服務器的合法性包括:證書是否過期,發行服務器證書的CA是否可靠,發行者證書的公鑰能否正確解開服務器證書的"發行者的數字簽名",服務器證書上的域名是否和服務器的實際域名相匹配。如果合法性驗證沒有通過,通訊將斷開;如果合法性驗證通過,將繼續進行第四步。

  • ④用戶端隨機產生一個用于后面通訊的"對稱密碼",然后用服務器的公鑰(服務器的公鑰從步驟②中的服務器的證書中獲得)對其加密,然后將加密后的"預主密碼"傳給服務器。

  • ⑤如果服務器要求客戶的身份認證(在握手過程中為可選),用戶可以建立一個隨機數然后對其進行數據簽名,將這個含有簽名的隨機數和客戶自己的證書以及加密過的"預主密碼"一起傳給服務器。

  • ⑥如果服務器要求客戶的身份認證,服務器必須檢驗客戶證書和簽名隨機數的合法性,具體的合法性驗證過程包括:客戶的證書使用日期是否有效,為客戶提供證書的CA是否可靠,發行CA 的公鑰能否正確解開客戶證書的發行CA的數字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗如果沒有通過,通訊立刻中斷;如果驗證通過,服務器將用自己的私鑰解開加密的"預主密碼 ",然后執行一系列步驟來產生主通訊密碼(客戶端也將通過同樣的方法產生相同的主通訊密碼)。

  • ⑦服務器和客戶端用相同的主密碼即"通話密碼",一個對稱密鑰用于SSL協議的安全數據通訊的加解密通訊。同時在SSL通訊過程中還要完成數據通訊的完整性,防止數據通訊中的任何變化。

  • ⑧客戶端向服務器端發出信息,指明后面的數據通訊將使用的步驟⑦中的主密碼為對稱密鑰,同時通知服務器客戶端的握手過程結束。

  • ⑨服務器向客戶端發出信息,指明后面的數據通訊將使用的步驟⑦中的主密碼為對稱密鑰,同時通知客戶端服務器端的握手過程結束。

  • ⑩-SSL的握手部分結束,SSL安全通道的數據通訊開始,客戶和服務器開始使用相同的對稱密鑰進行數據通訊,同時進行通訊完整性的檢驗。

SSL單向認證只要求站點部署了ssl證書就行,任何用戶都可以去訪問(IP被限制除外等),只是服務端提供了身份認證。

SSL雙向認證具體過程

  • ① 瀏覽器發送一個連接請求給安全服務器。

  • ② 服務器將自己的證書,以及同證書相關的信息發送給客戶瀏覽器。

  • ③ 客戶瀏覽器檢查服務器送過來的證書是否是由自己信賴的CA中心(如沃通CA)所簽發的。如果是,就繼續執行協議;如果不是,客戶瀏覽器就給客戶一個警告消息:警告客戶這個證書不是可以信賴的,詢問客戶是否需要繼續。

  • ④ 接著客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務器剛剛發送的相關消息是否一致,如果是一致的,客戶瀏覽器認可這個服務器的合法身份。

  • ⑤ 服務器要求客戶發送客戶自己的證書。收到后,服務器驗證客戶的證書,如果沒有通過驗證,拒絕連接;如果通過驗證,服務器獲得用戶的公鑰。

  • ⑥ 客戶瀏覽器告訴服務器自己所能夠支持的通訊對稱密碼方案。

  • ⑦ 服務器從客戶發送過來的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過密后通知瀏覽器。

  • ⑧ 瀏覽器針對這個密碼方案,選擇一個通話密鑰,接著用服務器的公鑰加過密后發送給服務器。

  • ⑨ 服務器接收到瀏覽器送過來的消息,用自己的私鑰解密,獲得通話密鑰。

  • ⑩ 服務器、瀏覽器接下來的通訊都是用對稱密碼方案,對稱密鑰是加過密的。

雙向認證則是需要服務端與客戶端提供身份認證,只能是服務端允許的客戶能去訪問,安全性相對于要高一些。



作者:_npc_
鏈接:https://www.jianshu.com/p/fb5fe0165ef2
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535373.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535373.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535373.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

雙向認證SSL原理

文中首先解釋了加密解密的一些基礎知識和概念,然后通過一個加密通信過程的例子說明了加密算法的作用,以及數字證書的出現所起的作用。接著對數字證書做一個詳細的解釋,并討論一下windows中數字證書的管理,最后演示使用makecert生成…

Xtrabackup備份與恢復

一、Xtrabackup介紹 Percona-xtrabackup是 Percona公司開發的一個用于MySQL數據庫物理熱備的備份工具,支持MySQL、Percona server和MariaDB,開源免費,是目前較為受歡迎的主流備份工具。xtrabackup只能備份innoDB和xtraDB兩種數據引擎的表&…

實時備份工具之inotify+rsync

1.inotify簡介 inotify 是一個從 2.6.13 內核開始,對 Linux 文件系統進行高效率、細粒度、異步地監控機制, 用于通知用戶空間程序的文件系統變化。可利用它對用戶空間進行安全、性能、以及其他方面的監控。Inotify 反應靈敏,用法非常簡單&…

nginx proxy_cache緩存詳解

目錄 1. 關于緩沖區指令 1.1 proxy_buffer_size1.2 proxy_buffering1.3 proxy_buffers1.4 proxy_busy_buffers_size1.5 proxy_max_temp_file_size1.6 proxy_temp_file_write_size1.7 緩沖區配置實例2. 常用配置項 2.1 proxy_cache_path2.2 proxy_temp_path2.3 proxy_cache2.4 …

mysql主從延遲

在實際的生產環境中,由單臺MySQL作為獨立的數據庫是完全不能滿足實際需求的,無論是在安全性,高可用性以及高并發等各個方面 因此,一般來說都是通過集群主從復制(Master-Slave)的方式來同步數據&#xff0c…

16張圖帶你吃透高性能 Redis 集群

現如今 Redis 變得越來越流行,幾乎在很多項目中都要被用到,不知道你在使用 Redis 時,有沒有思考過,Redis 到底是如何穩定、高性能地提供服務的? 你也可以嘗試回答一下以下這些問題: 我使用 Redis 的場景很…

Redis與MySQL雙寫一致性如何保證

談談一致性 一致性就是數據保持一致,在分布式系統中,可以理解為多個節點中數據的值是一致的。 強一致性:這種一致性級別是最符合用戶直覺的,它要求系統寫入什么,讀出來的也會是什么,用戶體驗好,…

weblogic忘記console密碼

進入 cd /sotware/oracle_ldap/Middleware/user_projects/domains/base_domain/security/ 目錄 執行 java -classpath /sotware/oracle_ldap/Middleware/wlserver_10.3/server/lib/weblogic.jar weblogic.security.utils.AdminAccount weblogic(賬號) weblogic123(密碼) . …

Mysql高性能優化技能總結

數據庫命令規范 所有數據庫對象名稱必須使用小寫字母并用下劃線分割 所有數據庫對象名稱禁止使用mysql保留關鍵字(如果表名中包含關鍵字查詢時,需要將其用單引號括起來) 數據庫對象的命名要能做到見名識意,并且最后不要超過32個…

Redis的AOF日志

如果 Redis 每執行一條寫操作命令,就把該命令以追加的方式寫入到一個文件里,然后重啟 Redis 的時候,先去讀取這個文件里的命令,并且執行它,這不就相當于恢復了緩存數據了嗎? 這種保存寫操作命令到日志的持久…

Redis 核心技術與實戰

目錄 開篇詞 | 這樣學 Redis,才能技高一籌 01 | 基本架構:一個鍵值數據庫包含什么? 02 | 數據結構:快速的Redis有哪些慢操作? 鍵和值用什么結構組織? 為什么哈希表操作變慢了? 有哪些底層數…

redis核心技術與實戰(二)緩存應用篇

1.《旁路緩存:redis 在緩存中工作原理》 1.緩存的兩個特征 1.什么是緩存,有什么特征? 磁盤->內存->cpu 之間讀寫速度差異巨大,為了平衡他們之間的差異,操作系統默認使用了兩種緩存; CPU 里面的末級…

redis核心技術與實戰(三) 性能篇

影響redis性能主要有以下部分: Redis 內部的阻塞式操作; CPU核和NUMA架構 Redis關鍵系統配置 Redis內存碎片 Redis緩沖區 下面一個個來介紹這些地方 1.《redis 有哪些阻塞點?》 redis實例主要交互的對象有以下幾點,我們依據下面這…

redis核心與實戰(一)數據結構篇

1.《redis數據結構概覽》 1.數據結構概覽 數據模型:一共5種,String(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Sorted Set(有序集合&#xf…

redis核心技術與實戰(四)高可用高擴展篇

1.《redis架構組成》 1.redis學習維度 2.一個基本的鍵值型數據庫包括什么? 1.訪問框架 redis通過網絡框架進行訪問,使得 Redis 可以作為一個基礎性的網絡服務進行訪問,擴大了redis應用范圍; 過程:如果客戶端發送“pu…

tomcat監控腳本

#!/bin/sh# func:自動監控tomcat腳本并且執行重啟操作# 獲取tomcat進程ID(其中[grep -w .....]中的.....需要替換為實際部署的tomcat文件夾名,如下) TomcatID$(ps -ef |grep tomcat |grep -w /usr/local/tomcat/apache-tomcat-8.5.31|grep -v…

weblogic命令行操作

啟動和停止子節點: [rootoud bin]# cd /sotware/oracle_ldap/Middleware/user_projects/domains/base_domain/bin/ [rootoud bin]# ./startManagedWebLogic.sh Server-0 http://192.168.63.129:7001 -Dweblogic.management.usernameweblogic -Dweblogic.management…

Ansible系列--Copy模塊

copy模塊 copy模塊在ansible里的角色就是把ansible執行機器上的文件拷貝到遠程節點上。 與fetch模塊相反的操作 常用參數 參數名是否必須默認值選項說明srcno 用于定位ansible執行的機器上的文件,需要絕對路徑。如果拷貝的是文件夾,那么文件夾會整體…

ANSIBLE--handlers的概念

handlers可以理解成另一種tasks,handlers是另一種’任務列表’,handlers中的任務會被tasks中的任務進行”調用”,但是,被”調用”并不意味著一定會執行,只有當tasks中的任務”真正執行”以后(真正的進行實際…

ansible--- tags

tags可以幫助我們對任務進行’打標簽’的操作,當任務存在標簽以后,我們就可以在執行playbook時,借助標簽,指定執行哪些任務,或者指定不執行哪些任務。在實際的使用中,我們應該讓tags的值能夠見名知義。 當…