一。 html
SSL證書是數字證書的一種,相似於駕駛證、護照和營業執照的電子副本。由於配置在服務器上,也稱爲SSL服務器證書。 git
SSL證書經過在客戶端瀏覽器和Web服務器之間創建一條SSL安全通道(Secure socket layer(SSL)安全協議是由Netscape Communication公司設計開發。該安全協議主要用來提供對用戶和服務器的認證;對傳送的數據進行加密和隱藏;確保數據在傳送中不被改變,即數據的完整性,現已成爲該領域中全球化的標準。因爲SSL技術已創建到全部主要的瀏覽器和WEB服務器程序中,所以,僅需安裝服務器證書就能夠激活該功能了),即經過它能夠激活SSL協議,實現數據信息在客戶端和服務器之間的加密傳輸,能夠防止數據信息的泄露。保證了雙方傳遞信息的安全性,並且用戶能夠經過服務器證書驗證他所訪問的網站是不是真實可靠。數位簽名又名數字標識、簽章 (即 Digital Certificate,Digital ID ),提供了一種在網上進行身份驗證的方法,是用來標誌和證實網路通訊雙方身份的數字信息文件,概念相似平常生活中的司機駕照或身份證類似。 數字簽名主要用於發送安全電子郵件、訪問安全站點、網上招標與投標、網上籤約、網上訂購、安全網上公文傳送、網上辦公、網上繳費、網上繳稅以及網上購物等安全的網上電子交易活動。 web
二。 算法
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是爲網絡通訊提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡鏈接進行加密。 瀏覽器
SSL協議提供的服務主要有: 安全
一、認證用戶和服務器,確保數據發送到正確的客戶機和服務器; 服務器
二、加密數據以防止數據中途被竊取; 網絡
三、維護數據的完整性,確保數據在傳輸過程當中不被改變。 socket
建議您在設置郵箱時使用SSL協議,這樣會保障您郵箱更安全的使用。 網站
使用方法:當您選擇了使用SSL協議時,請您同時修改各收/發件服務器端口號。
注:若您關閉了SSL,請將端口號修改回來,POP3的爲110,IMAP的爲143,SMTP的爲25。
三。SSL/TLS協議詳解
SSL(Secure Sockets Layer,安全套接層),及其繼任者 TLS(Transport Layer Security,傳輸層安全)是爲網絡通訊提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡鏈接進行加密。
爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程當中不會被截取及竊聽。
SSL協議位於TCP/IP協議與各類應用層協議之間,爲數據通信提供安全支持。SSL協議可分爲兩層:
SSL記錄協議(SSL Record Protocol):它創建在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。
SSL握手協議(SSL Handshake Protocol):它創建在SSL記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。
SSL協議提供的服務主要有:
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2)加密數據以防止數據中途被竊取;
3)維護數據的完整性,確保數據在傳輸過程當中不被改變。
1、什麼是SSL?
SSL或者Secure Socket Layer,是一種容許web瀏覽器和web服務器經過一個安全的鏈接進行交流的技術。這意味着將被髮送的數據在一端被翻譯成密碼,傳送出去,而後在另外一端解開密碼,再進行處理。這是一個雙向的過程,也就是瀏覽器和服務器都須要在發送數據以前對它們進行加密。
SSL協定的另外一個重要方面是認證(Authentication)。這就是說,在你開始試圖經過一個安全鏈接與一個Web服務器交流的時候,這個服務器會要求你的瀏覽器出示一組證件,經過「鑑定」的方式來證實這就是你所聲明的網站。在某些狀況下,服務器還會要求你的web瀏覽器的認證書,證實你就是你所說的那我的。這就是所知的「客戶認證」,儘管實際狀況中,更多地用在商務-對-商務(B2B)交易,而不是對我的用戶。大多數有SSL功能的web服務器不要求客戶認證(Client Authentication)。
2、證書:Certificate
3、證書格式
主要的證書類型有:
PEM
DER
PKCS#12
PEM
能夠包括全部私鑰(RSA 和 DSA)、公鑰(RSA 和 DSA)和 (x509) 證書。它存儲用 Base64 編碼的 DER 格式數據,用 ascii 報頭包圍,所以適合系統之間的文本模式傳輸。
-----BEGIN CERTIFICATE-----
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
EzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xFTAT
BgNVBAoTDEJFQSBXZWJMb2dpYzERMA8GA1UECxMIU2VjdXJpdHkxIzAhBgNVBAMT
GkRlbW8gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9zdXBw
b3J0QGJlYS5jb20wHhcNMDAwNTMwMjEzODAxWhcNMDQwNTEzMjEzODAxWjCBjDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFTATBgNVBAoTDEJFQSBXZWJMb2dpYzEZMBcGA1UEAxMQd2VibG9n
aWMuYmVhLmNvbTEeMBwGCSqGSIb3DQEJARYPc3VwcG9ydEBiZWEuY29tMFwwDQYJ
KoZIhvcNAQEBBQADSwAwSAJBALdsXEHqKHgs6zj0hU5sXMAUHzoT8kgWXmNkKHXH
79qbPh6EfdlriW9G/AbRF/pKrCQu7hhllAxREbqTuSlf2EMCAwEAATANBgkqhkiG
9w0BAQQFAANBACgmqflL5m5LNeJGpWx9aIoABCiuDcpw1fFyegsqGX7CBhffcruS
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
-----END CERTIFICATE-----
DER
辨別編碼規則 (DER) 可包含全部私鑰、公鑰和證書。它是大多數瀏覽器的缺省格式,並按 ASN1 DER 格式存儲。它是無報頭的 - PEM 是用文本報頭包圍的 DER。
PKCS#12
公鑰加密標準 #12 (PKCS#12) 可包含全部私鑰、公鑰和證書。其以二進制格式存儲,也稱爲 PFX 文件。
4、加密算法
加密算法有倆大類,第一種是不基於KEY的,另外一種是不基於KEY的。
基於KEY的,舉個簡單的例子,我要加密"fordesign"這麼一串字符,就把每一個字符都變成它的後一個字符,那麼就是"gpseftjhm"了,這樣的東西人家固然看不明白,接收方用相反的方法就能夠獲得原文。固然這只是個例子,如今應該沒人用這麼搞笑的加密算法了吧。
不基於KEY,好象一直用到了計算機出現。我記得古中國軍事機密都是用這種方式加密的。打戰的時候好象軍隊那些電報員也要帶着密碼本,也應該是用這種方式加密的。這種算法的安全性以保持算法的保密爲前提。
這種加密算法的缺點太明顯了,就是一旦你的加密算法給人家知道,就確定掛。日本中途島慘敗好象就是密碼給老米破了。設計一種算法是很麻煩的,一旦給人破了就沒用了,這也忑浪費。
咱們如今使用的加密算法通常是基於key的,也就是說在加密過程當中須要一個key,用這個key來對明文進行加密。這樣的算法即便一次被破,下次改個key,還能夠繼續用。key是一個什麼東西呢?隨便你,能夠是一個隨機產生的數字,或者一個單詞,啥都行,只要你用的算法認爲你選來作key的那玩意合法就行。
這樣的算法最重要的是:其安全性取決於key,通常來講取決於key的長度。也就是說應該保證人家在知道這個算法而不知道key的狀況下,破解也至關困難。其實如今經常使用的基於KEY的加密算法在網絡上均可以找到。
基於key的加密算法又包括倆類:對稱加密和不對稱加密。
對稱加密指的是雙方使用徹底相同的key, 最多見的是DES. DES3, RC4等。對稱加密算法的原理很容易理解,通訊一方用KEK加密明文,另外一方收到以後用一樣的KEY來解密就能夠獲得明文。
不對稱加密指雙方用不一樣的KEY加密和解密明文,通訊雙方都要有本身的公共密鑰和私有密鑰。
舉個例子比較容易理解, 咱們們假設通訊雙方分別是A、B。
A 擁有 KEY_A一、KEY_A2, 其中KEY_A1是A的私有密鑰,KEY_A2是A的公共密鑰。
B 擁有 KEY_B一、KEY_B2, 其中KEY_B1是B的私有密鑰,KEY_B2是B的公共密鑰。
公共密鑰和私有密鑰的特色是,通過其中任何一把加密過的明文,只能用另一把纔可以解開。也就是說通過KEY_A1加密過的明文,只有KEY_A2纔可以解密,反之亦然。
通訊過程以下:
A-------->KEY_A2------------>B
A<--------KEY_B2<------------A
這個過程叫作公共密鑰交換,老外管這叫key exchange。
以後A和B就分別用對方的公共密鑰加密,用本身的私有密鑰解密。
通常公共密鑰是要發佈出去的,而後你經過本身的私有密鑰加密明文,人家用你的公共密鑰解密,若是能解開,那麼說明你是加密人,這就是SSL使用的驗證機制。
我若是要發給你,我就用你的公鑰加密,這讓只有你能用本身的私鑰解密。若是我用本身的私鑰加密,而後發佈出去,這就不屬於保密,而是屬於認證,證實這條信息是我發的,並且我不能賴賬,由於私鑰只有我本身知道。
經常使用的不對稱加密通常有RSA、 DSA、 DH等。咱們通常使用RSA。
5、數字簽名
數字簽名也是不對稱加密算法的一個重要應用,理解它對於理解SSL很重要的,放在這裏一塊兒介紹一下。
簽名是什麼你們都很熟悉吧?證實該東西是你寫的,是你發佈的,你就用簽名搞定。看看那些重要文件都要頭頭簽名。數字簽名就是數字化的簽名了。記得公用密鑰和私有密鑰的特徵嗎?只有你一我的有你本身的私有密鑰。而你的公用密鑰是其餘人都知道的 了。那麼你在寫完一封郵件以後,用本身的私有密鑰加密本身的名字,接收人用你的公共密鑰解開一看,哦,是你發的。這就是你的數字簽名過程了。
上面的解釋是很簡化的了,其實數字簽名比這個複雜多了,但咱們沒有了解的必要,知道數字簽名是這麼一回事就能夠了。
還有一種咱們須要知道的加密算法,其實我不以爲那是加密算法 ,應該叫哈希算法,英文是message digest, 是用來把任何長度的一串明文以必定規則變成固定長度的一串字符串。它在SSL中的做用也很重要,之後會慢慢說起的。通常使用的是MD五、SHA、base64不是加密算法,但也是SSL常用的一種算法,它是編碼方式,用來把asc碼和二進制碼轉來轉去的。
具體的加密解密過程咱們不須要了解,由於SSL根本不關心。但瞭解加密算法的一些基本原理是必要的,不然很難理解SSL。
參考http://baike.baidu.com/link?url=paEQC-YtsDPLOZzOIOpJvv0BNxBLfypWWZAFJsGEigUKA2WM1rV5MdExsMNhtiRsugwTK6dUXljZgi4h0NxOna
http://help.163.com/10/1111/15/6L7HMASV00753VB8.html
http://www.cnblogs.com/adforce/archive/2012/11/27/2790937.html