1. 程式人生 > >https、SSL與數字證書介紹

https、SSL與數字證書介紹

在網際網路安全通訊方式上,目前用的最多的就是https配合ssl和數字證書來保證傳輸和認證安全了。本文追本溯源圍繞這個模式談一談。

名詞解釋

首先解釋一下上面的幾個名詞:

https:在http(超文字傳輸協議)基礎上提出的一種安全的http協議,因此可以稱為安全的超文字傳輸協議。http協議直接放置在TCP協議之上,而https提出在http和TCP中間加上一層加密層。從傳送端看,這一層負責把http的內容加密後送到下層的TCP,從接收方看,這一層負責將TCP送來的資料解密還原成http的內容。

SSL(Secure Socket Layer):是Netscape公司設計的主要用於WEB的安全傳輸協議。從名字就可以看出它在https協議棧中負責實現上面提到的加密層。因此,一個https協議棧大致是這樣的:

https

數字證書:一種檔案的名稱,好比一個機構或人的簽名,能夠證明這個機構或人的真實性。其中包含的資訊,用於實現上述功能。

加密和認證:加密是指通訊雙方為了防止銘感資訊在通道上被第三方竊聽而洩漏,將明文通過加密變成密文,如果第三方無法解密的話,就算他獲得密文也無能為力;認證是指通訊雙方為了確認對方是值得信任的訊息傳送或接受方,而不是使用假身份的騙子,採取的確認身份的方式。只有同時進行了加密和認真才能保證通訊的安全,因此在SSL通訊協議中這兩者都被應。

因此,這三者的關係已經十分清楚了:https依賴一種實現方式,目前通用的是SSL,數字證書是支援這種安全通訊的檔案。另外有SSL衍生出TLS和WTLS,前者是IEFT將SSL標準化之後產生的(TSL1.0),與SSL差別很小,後者是用於無線環境下的TSL。

如何加密

常用的加密演算法:

  • 對稱密碼演算法:是指加密和解密使用相同的金鑰,典型的有DES、RC5、IDEA(分組加密),RC4(序列加密);
  • 非對稱密碼演算法:又稱為公鑰加密演算法,是指加密和解密使用不同的金鑰(公開的公鑰用於加密,私有的私鑰用於解密)。比如A傳送,B接收,A想確保訊息只有B看到,需要B生成一對公私鑰,並拿到B的公鑰。於是A用這個公鑰加密訊息,B收到密文後用自己的與之匹配的私鑰解密即可。反過來也可以用私鑰加密公鑰解密。也就是說對於給定的公鑰有且只有與之匹配的私鑰可以解密,對於給定的私鑰,有且只有與之匹配的公鑰可以解密。典型的演算法有RSA,DSA,DH;
  • 雜湊演算法:雜湊變換是指把檔案內容通過某種公開的演算法,變成固定長度的值(雜湊值),這個過程可以使用金鑰也可以不使用。這種雜湊變換是不可逆的,也就是說不能從雜湊值變成原文。因此,雜湊變換通常用於驗證原文是否被篡改。典型的演算法有:MD5,SHA,Base64,CRC等。

在雜湊演算法(也稱摘要演算法)中,有兩個概念,強無碰撞和弱無碰撞。弱無碰撞是對給定的訊息x,就是對你想偽造的明文,進行運算得出相同的摘要資訊。也就是說你可以控制明文的內容。強無碰撞是指能找到相同的摘要資訊,但偽造的明文是什麼並不知道。

SSL的加密過程:

需要注意的是非對稱加解密演算法的效率要比對稱加解密要低的多。所以SSL在握手過程中使用非對稱密碼演算法來協商金鑰,實際使用對稱加解密的方法對http內容加密傳輸。下面是對這一過程的形象的比喻:

假設A與B通訊,A是SSL客戶端,B是SSL伺服器端,加密後的訊息放在方括號[]裡,以突出明文訊息的區別。雙方的處理動作的說明用圓括號()括起。

  • A:我想和你安全的通話,我這裡的對稱加密演算法有DES,RC5,金鑰交換演算法有RSA和DH,摘要演算法有MD5和SHA。
  • B:我們用DES-RSA-SHA這對組合好了。這是我的證書,裡面有我的名字和公鑰,你拿去驗證一下我的身份(把證書發給A)。
  • A:(檢視證書上B的名字是否無誤,並通過手頭早已有的數字的證書驗證了B的證書的真實性,如果其中一項有誤,發出警告並斷開連線,這一步保證了B的公鑰的真實性)
  • (產生一份祕密訊息,這份祕密訊息處理後將用作對稱加密金鑰,加密初始化向量和hmac的金鑰。將這份祕密訊息-協議中稱為per_master_secret-用B的公鑰加密,封裝成稱作ClientKeyExchange的訊息。由於用了B的公鑰,保證了第三方無法竊聽)
  • 我生成了一份祕密訊息,並用你的公鑰加密了,給你(把ClientKeyExchange發給B)
  • 注意,下面我就要用加密的辦法給你發訊息了!
  • (將祕密訊息進行處理,生成加密金鑰,加密初始化向量和hmac的金鑰)
  • [我說完了]
  • B:(用自己的私鑰將ClientKeyExchange中的祕密訊息解密出來,然後將祕密訊息進行處理,生成加密金鑰,加密初始化向量和hmac的金鑰,這時雙方已經安全的協商出一套加密辦法了)
  • 注意,我也要開始用加密的辦法給你發訊息了!
  • [我說完了]
  • A: [我的祕密是...]
  • B: [其它人不會聽到的...]

從上面的過程可以看到,SSL協議是如何用非對稱密碼演算法來協商金鑰,並使用金鑰加密明文並傳輸的。還有以下幾點補充:

  1. 1.B使用數字證書把自己的公鑰和其他資訊包裝起來發送A,A驗證B的身份,下面會談到A是如何驗證的。
  2. 2.A生成了了加密金鑰、加密初始化向量和hmac金鑰是雙方用來將明文摘要和加密的。加密初始化向量和hmac金鑰首先被用來對明文摘要(防止明文被篡改),然後這個摘要和明文放在一起用加密金鑰加密後傳輸。
  3. 3.由於只有B有私鑰,所以只有B可以解密ClientKeyExchange訊息,並獲得之後的通訊金鑰。
  4. 4.事實上,上述過程B沒有驗證A的身份,如果需要的話,SSL也是支援的,此時A也需要提供自己的證書,這裡就不展開了。在設定IIS的SSL Require的時候,通常預設都是igore client certification的。

數字證書

由上面的討論可以知道,數字證書在ssl傳輸過程中扮演身份認證和金鑰分發的功能。究竟什麼是數字證書呢?

簡而言之數字證書是一種網路上證明持有者身份的檔案,同時還包含有公鑰。一方面,既然是檔案那麼就有可能”偽造”,因此,證書的真偽就需要一個驗證方式;另一方面,驗證方需要認同這種驗證方式。

對於第一個需求,目前的解決方案是,證書可以由國際上公認的證書機構頒發,這些機構是公認的信任機構,一些驗證證書的客戶端應用程式:比如瀏覽器,郵件客戶端等,對於這些機構頒發的證書完全信任。當然想要請這些機構頒發證書可是要付”到了斯”的,通常在windows部署系統的時候會讓客戶端安裝我們自己伺服器的根證書,這樣客戶端同樣可以信任我們的證書。

對於第二個需求,客戶端程式通常通過維護一個”根受信任機構列表”,當收到一個證書時,檢視這個證書是否是該列表中的機構頒發的,如果是則這個證書是可信任的,否則就不信任。

證書的信任

因此作為一個https的站點需要與一個證書繫結,無論如何,證書總是需要一個機構頒發的,這個機構可以是國際公認的證書機構,也可以是任何一臺安裝有證書服務的計算機。客戶端是否能夠信任這個站點的證書,首先取決於客戶端程式是否匯入了證書頒發者的根證書。下圖說明了這個流程:

dc

有時一個證書機構可能授權另一個證書機構頒發證書,這樣就出現了證書鏈。

IE瀏覽器在驗證證書的時候主要從下面三個方面考察,只要有任何一個不滿足都將給出警告:

  • 證書的頒發者是否在”根受信任的證書頒發機構列表”中
  • 證書是否過期
  • 證書的持有者是否和訪問的網站一致

另外,瀏覽器還會定期檢視證書頒發者公佈的”證書吊銷列表”,如果某個證書雖然符合上述條件,但是被它的頒發者在”證書吊銷列表”中列出,那麼也將給出警告。每個證書的CRL Distribution Point欄位顯示了檢視這個列表的url。儘管如此,windows對於這個列表是”不敏感”的,也就是說windows的api會快取這個列表,直到設定的快取過期才會再從CRL Distribution Point中下載新的列表。目前,只能通過在證書頒發服務端儘量小的設定這個有效期(最小1天),來儘量使windows的客戶端”敏感”些。

要實現ssl加密通訊,必須要雙方協商金鑰,ssl採用的是非對稱加密來實現金鑰交換。在這個過程中,服務端向客戶端傳送的公鑰就包含在證書中。客戶端將自己生成的金鑰用公鑰加密,服務端用於公鑰匹配的私鑰解密。因此,可以想到的是,服務端儲存了一個私鑰,並且也與https的站點綁定了。

相關推薦

httpsSSL數字證書介紹

在網際網路安全通訊方式上,目前用的最多的就是https配合ssl和數字證書來保證傳輸和認證安全了。本文追本溯源圍繞這個模式談一談。 名詞解釋 首先解釋一下上面的幾個名詞: https:在http(超文字傳輸協議)基礎上提出的一種安全的http協議,因此可以稱為安全的

SSL協議數字證書

SSL 協議的握手和通訊   為了便於更好的認識和理解 SSL 協議,這裡著重介紹 SSL 協議的握手協議。SSL 協議既用到了公鑰加密技術又用到了對稱加密技術,對稱加密技術雖然比公鑰加密技術的速度快,可是公鑰加密技術提供了更好的身份認證技術。SSL 的握手協議非常有效的讓客

httpsssltls協議學習

一、知識準備 1.ssl協議:通過認證、數字簽名確保完整性;使用加密確保私密性;確保客戶端和伺服器之間的通訊安全 2.tls協議:在SSL的基礎上新增了諸多的功能,它們之間協議工作方式一樣 3.https協議:https over tls,tls協議是https協議的核心 名詞

HTTPS協議以及雙向數字證書校驗 自簽名證書的生成

$ openssl x509 -text -in client.crt -noout Certificate:     Data:         Version: 1 (0×0)         Serial Number:             d6:e3:f6:fa:ae:65:ed:df      

java加密解密數字證書的操作

1 Java程式實現金鑰庫的維護 1.1 Java程式列出金鑰庫所有條目 import java.util.*; import java.io.*; import java.security.*; public class ShowAlias{

數字簽名數字證書

前言 先看一下百度百科對數字簽名和數字證書的解釋: 數字簽名: 將報文按雙方約定的HASH演算法計算得到一個固定位數的報文摘要。在數學上保證:只要改動報文中任何一位,重新計算出的報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。 將該報文摘要值用傳送者的私人

通俗的理解HTTPS以及SSL中的證書驗證

時間進入到2017年,細心的人在瀏覽器位址列中會發現,經常瀏覽的網站都是https打頭,最左邊也有綠色的安全鎖。其實全站https時代已經來臨。2014年百度完成了全網https的切換,2015年淘寶、天貓頁面全部https訪問,蘋果公司要求2016年底iOS APP實現ht

JMETER ssl安全數字證書相關配置

HTTPS概念:     有人會說既然有了非對稱加密演算法,那麼直接利用它就可以實現瀏覽器與Web伺服器間通訊訊息的加解密了。但你要明白一切保障資訊保安的手段都是在犧牲效能和易用性的代價下展開的,確實可以在訊息傳遞中直接利用非對稱加密演算法來實現訊息的加解密,但在瀏覽器與We

數字簽名數字證書形象解釋

前言 先看一下百度百科對數字簽名和數字證書的解釋: 數字簽名: 將報文按雙方約定的HASH演算法計算得到一個固定位數的報文摘要。在數學上保證:只要改動報文中任何一位,重新計算出的報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。 將該報文摘要值用傳送者

數字簽名數字證書的原理

在瞭解數字簽名和數字證書之前,可以先了解一下加密演算法的一些常見分類,我之前寫了一篇介紹常見加密演算法的文章。https://www.cnblogs.com/mysticbinary/p/12615063.html # 將軍與士兵通訊 ---- 數字簽名原理 為了用最簡單的方式來講解數字簽名,我下面

對稱(DES/AES)非對稱(RSA/SSL/數字證書)加密介紹及實際應用

行數據 服務端 版本 報道 pass edi 得到 參數 crc 本文不對具體的算法做深入研究,只是講解各種安全算法的原理和使用場景。 一、數據校驗算法 數據校驗,是為保護數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。當接收方用同樣的算法再算一次校驗值,如

幾個例子理解對稱加密非對稱加密公鑰私鑰簽名驗籤數字證書HTTPS加密方式

# 原創,轉載請留言聯絡 為什麼會出現這麼多加密啊,公鑰私鑰啊,簽名啊這些東西呢?說到底還是保證雙方通訊的安全性與完整性。例如小明發一封表白郵件給小紅,他總不希望給別人看見吧。而各種各樣的技術就是為了保障通訊的安全。(本文務必從上到下看) 1.對稱加密與非對稱加密 對稱加密: 對稱加密是

和安全有關的那些事(非對稱加密數字摘要數字簽名數字證書SSLHTTPS及其他)

本文原文連線:http://blog.csdn.net/bluishglc/article/details/7585965 對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對

和安全有關的那些事(非對稱加密數字摘要數字簽名數字證書SSLHTTPS

對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一番

數字證書SSLHTTPS及在Nginx中的配置

一、什麼是 RSA、SSL、HTTPS RSA:它是非對稱加密演算法的一種,而且是最常用的一種。它的理論基礎是:計算兩個大質數的乘積非常簡單,而對該乘積進行因子分解就非常困難。而且          這兩個質數越大,對其乘積的分解就越困難。RSA生成的金鑰對有公鑰和私鑰之分,不過,貌似金鑰對中的任何一個當

網路安全之 (非對稱加密數字摘要數字簽名數字證書SSLHTTPS及其他)

對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一

非對稱加密數字摘要數字簽名數字證書SSLHTTPS及其他

一、 對稱加密和非對稱加密         對於一份資料,通過一種演算法,基於傳入的金鑰(一串由數字或字元組成的字串,也稱“key”),將明文資料轉換成了不可閱讀的密文,這是眾所周知的“加密”,同樣的,密文到達目的地後,需要再以相應的演算法,配合一個金鑰,將密文再解密

SECURITY 03: 郵件服務TLS/SSL 總結和答疑 CA數字證書服務

roo email tab cal hostname tcp6 std http let day03部署CA服務器郵件加密網站加密+++++++++++++++++++++++++++++部署CA服務器 (54) 機構名稱 tarenaa

https數字證書交換過程介紹

dig color 數字證書 信息 tar 一起 med www ron 文章轉自:https://www.2cto.com/kf/201804/739010.html,感謝原作者的辛苦整理,講解的很清楚,謝謝。 【https數字證書交換過程介紹】 註意:該問的背景用到了非

https\SSL安全證書配置,TomcatnodejsNginx伺服器安全證書配置

安全證書的好處我就不多說,直接上圖、申請ssl證書、做個耿直boy。 前提條件:阿里雲服務、域名、linux系統、Tomcat(nodejs或Nginx)、購買ssl證書。 用jdk生成的安全證書裝到Tomcat上,由於沒有通過認證,效果如下圖: 購買安全證書,安裝之後s