1、前言
最近工作涉及到https,需要修改nginx的openssl模塊,引入keyless方案。關于keyless可以參考CloudFlare的官方博客:
在openssl的基礎上修改私鑰校驗過程,因此需要對openssl的認證認證流程需要熟悉一下。SSL中涉及到很多概念,開始都不清楚,例如CA,數字簽名、數字證書等,本文主要是總結SSL認證的基礎知識,openssl的單向和雙向認證流程,并寫代碼測試。
2、基礎知識
SSL:Secure Socket Layer,安全套接字層,它位于TCP層與Application層之間。提供對Application數據的加密保護(密文),完整性保護(不被篡改)等安全服務,它缺省工作在TCP 443 端口,一般對HTTP加密,即俗稱的HTTPS。
TLS:Transport Layer Secure,更關注的是提供安全的傳輸服務,它很靈活,如果可能,它可以工作在TCP,也可以UDP (DTLS),也可以工作在數據鏈路層,比如802.1x EAP-TLS。
關于SSL/TSL可以參考:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
公鑰:大家公用的,可以通過電子郵件發(fā)布,通過網站讓別人下載,公鑰其用來加密和驗章。
私鑰:就是自己的私有的,必須非常小心保存,最好加上 密碼,私鑰是用來解密和簽章。
數字簽名:將報文按雙方約定的HASH算法計算得到一個固定位數的報文摘要。在數學上保證:只要改動報文中任何一位,重新計算出的報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。將該報文摘要值用發(fā)送者的私人密鑰加密,然后連同原報文一起發(fā)送給接收者,而產生的報文即稱數字簽名。關于數字簽名參考:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html 和
延伸閱讀
學習是年輕人改變自己的最好方式