認識SSL
SSL(Security Sockets Layer 安全套接層)是Netscape公司提出的安全協議,利用數據加密、身份驗證和消息完整性驗證機制,為網絡上數據的傳輸提供安全性保證。SSL及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。
SSL的能做什么:
數據加密
身份驗證
消息完整性驗證
解決的問題:
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2)加密數據以防止數據中途被竊取;
3)維護數據的完整性,確保數據在傳輸過程中不被改變。
CA、根證書與數字證書
網絡安全無疑是現階段互聯網發展最大的問題,數字證書是解決這個問題的一個繞不開的辦法,不管是ActiveX插件還是https都需要用到數字證書。
基本概念
- CA(Certificate Authority)被稱為證書授權中心,是數字證書發放和管理的機構。
- 根證書是CA認證中心給自己頒發的證書,是信任鏈的起始點。用戶安裝根證書意味着對這個CA認證中心的信任。
- 數字證書頒發過程一般為:用戶首先產生自己的密鑰對,並將公共密鑰及部分個人身份信息(CSR)傳送給認證中心。認證中心在核實身份后,將執行一些必要的步驟,以確信請求確實由用戶發送而來,然后,認證中心將發給用戶一個數字證書,該證書內包含用戶的個人信息和他的公鑰信息,同時還附有認證中心的簽名信息。
CSR
定義:CSR是Certificate Signing Request的英文縮寫,即證書簽名請求文件。
緣由:我們想要證明我們的網站是可信的,數據傳輸是加密的,我們就需要由第三方CA機構頒發的證書來證明,比如Symantec,GeoTrust等等。而想要申請這樣的證書,我們的第一步就是需要生成我們自己的CSR文件。
來源:CSR是證書申請者在申請數字證書時由CSP(加密服務提供者)/工具 在生成私鑰的同時也生成證書請求文件,證書申請者只要把CSR文件提交給證書頒發機構后,證書頒發機構使用其根證書私鑰簽名就生成了證書公鑰文件,也就是頒發給用戶的證書。
CSR需要由申請人提供域名、公司名稱、部門、省份、城市、國家借助相關工具生成,工具同時會生成證書請求文件和私鑰文件,其中的證書請求文件就是CSR文件,這兩個文件是相互匹配的,我們將CSR文件提交給CA申請證書,經過CA身份對申請者身份進行審核后,頒發證書公鑰,申請人收到證書文件后,將證書公鑰文件配合私鑰文件轉化成服務器對應的格式的文件部署在HTTP服務器上面,這樣我們的網站就可信了。
文件:
1、CSR是以-----BEGIN CERTIFICATE REQUEST-----開頭,-----END CERTIFICATE REQUEST-----為結尾的base64格式的編碼。將其保存為文本文件,就是所謂的CSR文件。
2、證書文件
一般狀況下,做為文件形式存在的證書通常有三種格式:算法
- 第一種:帶有私鑰的證書,由Public Key Cryptography Standards #12,PKCS#12標准定義,包含了公鑰和私鑰的二進制格式的證書形式,以.pfx做為證書文件后綴名。
- 第二種:DER Encoded Binary (.cer) 二進制編碼的證書,證書中沒有私鑰,DER 編碼二進制格式的證書文件,以.cer做為證書文件后綴名。
- 第三種:Base64 Encoded(.cer),Base64編碼的證書,證書中沒有私鑰,BASE64 編碼格式的證書文件,也是以.cer做為證書文件后綴名。
由定義能夠看出,只有pfx格式的數字證書是包含有私鑰的,cer格式的數字證書里面只有公鑰沒有私鑰。
Cer證書只包含公鑰信息,若是客戶端與網站通訊時須要用到私鑰(基本全部須要數字證書的網站都會用到私鑰),則cer證書是沒法正常訪問網站的,網站會提示“該頁要求客戶證書”。因為cer證書只包含公鑰信息,通常只能用於解密使用(解密該公鑰對應的私鑰加密的數據)。在申請證書的機器上存儲了私鑰信息,所以,能夠把CER證書導入為PFX證書,並能夠把PFX證書導出,這樣其余機器就能夠安裝PFX證書了。服務器
Pfx證書既能夠導出為pfx證書,也能夠導出為cer證書。Pfx證書導出時,會提示是否導出私鑰,導出私鑰即pfx證書,不導出私鑰就是cer證書。若是選擇導出私鑰,出於安全性考慮,須要指定一個密碼來保護該私鑰,后續再次導入該pfx證書時,須要提供保護該私鑰密碼,才能在機器上安裝證書。
認證流程
https認證流程:
1、服務器生成一對密鑰,私鑰自己留着,公鑰交給數字證書認證機構(CA)
2、CA進行審核,並用CA自己的私鑰對服務器提供的公鑰進行簽名生成數字證書
3、在https建立連接時,客戶端(瀏覽器)從服務器獲取數字證書,用CA的公鑰(根證書)對數字證書進行驗證,比對一致,說明該數字證書確實是CA頒發的(得此結論有一個前提就是:客戶端的CA公鑰確實是CA的公鑰,即該CA的公鑰與CA對服務器提供的公鑰進行簽名的私鑰確實是一對。),而CA又作為權威機構保證該公鑰的確是服務器端提供的,從而可以確認該證書中的公鑰確實是合法服務器端提供的。
注:為保證第3步中提到的前提條件,CA的公鑰必須要安全地轉交給客戶端(CA根證書必須先安裝在客戶端),因此,CA的公鑰一般來說由瀏覽器開發商內置在瀏覽器的內部。於是,該前提條件在各種信任機制上,基本保證成立。
制作自己的根證書及數字證書
通過CA生成數字證書比較很麻煩,而且要收費貴,在公司設備與公司的服務器通信時可以采用自己生成的數字證書,但是需要將數字證書導入到設備中。
制作數字證書工具 makecert : makecert 制作數字證書
數字簽名工具SignTool下載【 鏈接: https://pan.baidu.com/s/1nROzB5qcmrY25E-PlW3mFw 密碼: x5jj】
《PKI/CA 與數字證書技術大全》
PKI
1976年 RSA誕生,公鑰密碼算法
1988 第一個數字證書標准X.509 誕生,進入PKI時代
90年代,國內各省市開始建設CA,基於數字證書的電子交易規范SET誕生
2005年 《電子簽名法》生效
2020年1月1日《密碼法》正式實施
所有與數字證書相關的各種概念和技術,統稱為PKI(Public Key Infrastructure)
PKI為何出現
1、保密通信 催生了 密碼技術
傳統密碼學Vs現代密碼學
- 加密對象由 文字書信-> 電報字碼 -> 數字化的文本。
- 保密通信 -> 信息安全(包括保密通信、數據加密、數字簽名)
- 密碼系統的結構稱為 密碼算法,進行加密/解密操作所需的關鍵參數成為 密鑰。
- 主要密碼算法: 對稱算法、非對稱算法、摘要算法
2、密碼技術 推動 密鑰管理技術
算法是公開的,所以現代密碼學的安全性主要取決於密鑰的安全性。
密鑰管理:包括
- 密鑰產生:為了抵御 窮舉攻擊和字典攻擊,密鑰長度應該足夠長,密鑰復雜度應該足夠高。
- 密鑰傳輸:X9.17標准描述了兩種密鑰(密鑰加密密鑰和數據密鑰),前者一般是通過手工分發,后者是用前者加密后分發。
- 密鑰驗證
- 密鑰更新
- 密鑰存儲
- 密鑰備份:密鑰托管在安全的第三方中心、密鑰分割保管等方式。
- 密鑰銷毀
- 密鑰有效期:密鑰使用時間越長,它泄露的機會就會越大,所以密鑰不能無限期使用。
- 密鑰使用:由於對稱密鑰使用時,需要共享密鑰,所以在使用時不直接使用共享密鑰,而是基於該密鑰產生會話密鑰,然后使用會話密鑰對數據進行加密。
PKI技術基礎
PKI之數字證書與私鑰(網絡身份)
PKI之CA與KMC(管理網絡身份證)
PKI之應用(使用網絡身份證)
數字證書
數字證書:”網絡版的身份證“。
數字證書里面包含:姓名、省份等身份信息,也包含一個公鑰。 每個用戶都擁有一個數字證書和一個私鑰(與數字證書中的公鑰配對),數字證書可以公開,但是私鑰需要保管,一般是通過USB Key存儲,即U盾。
證書規范與格式:
編碼格式總結:
- X.509 DER(Distinguished Encoding Rules)編碼,后綴為:.der .cer .crt
- X.509 BASE64編碼(PEM格式),后綴為:.pem .cer .crt
用途:
解決身份認證問題;
數據加密與完整;
行為抗抵賴等問題
密碼算法
數字信封
數字證書格式
X.509 證書的結構是用ASN1(Abstract Syntax Notation One) 進行描述數據結構,並使用ASN1 語法進行編碼。
ASN1
更多參考:
pkcs1
RSA Cryptography Specifications
,即 RSA 密碼學規范,它在
[rfc8017] 中有詳細說明,定義了 RSA 密鑰文件的格式和編碼方式,以及加解密、簽名、填充的基礎算法。
pkcs8
Private-Key Information Syntax Standard
,即私鑰格式相關的標准,它不像
PKCS#1 只支持 RSA,而是支持各種類型的私鑰。PKCS#8 私鑰文件格式中首尾並未說明私鑰算法類型,算法類型在數據中標識。PKCS#8 中的私鑰也支持加密。
PKCS 使用 ASN.1 定義了密鑰的數據結構,並使用 DER 編碼規則編碼密鑰,最終使用 PEM (Base64-encoded DER) 格式將密鑰數據存儲在密鑰文件中。
PKCS#1 首部會標識密鑰算法類型,PKCS#8 則是在密鑰數據中有字段專門存儲密鑰算法。
參考資料
數字證書原理【重點】