TLS完全指南(零)
目錄
- TLS和安全通信
- OpenSSL操作指南
- 用Go語言寫 HTTPS 程序
為什麼要寫這篇文章
TLS很有用
一般來說,大家會覺得 TLS 是典型的系統工程問題,通常只有要寫 HTTPS server 的人才會關注。可實際上 TLS 設置和公司的域名相關,和公司打算提供 的 Web 服務相關,是 CEO 或者至少 CTO 應該了解的。
我曾經以為干機器學習的研究員們一輩子也不需要碰 HTTPS —— 寫 demo 的話寫 一個 HTTP 服務就好了。可是最近二十年來機器學習技術的發展,大都是圍繞著 越來越強大的計算能力展開的。當我們開始琢磨用 Kubernetes 搭建能支持公司 各種業務的通用計算機群的時候,發現機群的安全性是一個關鍵要素。為了理解 安全性,我發現必須深入理解 TLS。
現有文章說不明白
我以為應該很容易找到 TLS 的資料,因為那麼多大大小小的公司都需要配置 HTTPS 服務。可是我於2016年下半年花了很長時間找到和閱讀了數十篇相關文章 (部分見參考文獻),卻沒有一篇全面覆蓋了以下幾個方面:
- TLS 解決的問題和利用的密碼學原理,
- 實踐操作,比如用openssl生成秘鑰和CSR、簽署certificate。配置根證書和 信任鏈,
- 如何寫一個 HTTP server 和對應的client。
絕大多數文章針對某個具體(配置或者編程或者商業規劃)問題,一開口就是專 家的語氣給建議,缺少邏輯推導過程,令人不知其所以然,也就不敢信其然。更要命的是,有很多文章里有這樣那樣的錯誤信息,令人迷惑。
剩下的有用的文章里,往往對上述三方面問題有所側重,而不全面。相對全面的 是這篇中文文章,但也是 偏重於用Go語言寫 HTTPS server 和 client。所以我想寫一篇三部分的全面指 南,總結這段時間的探索和學習過程。
參考文獻
- How SSL and TLS works
- Go和HTTPS | Tony Bai
- IBM Knowledge Center
- CoreOS
- Creating a Self-Signed SSL Certificate
- SSL Endpoint | Heroku Dev Center
- https://gist.github.com/denji/12b3a568f092ab951456
- Using self-signed SSL certificates
- How do I create a PEM file from the certificates I received from you?
- What is a CSR (Certificate Signing Request)?
推薦閱讀:
※為什麼SSL證書那麼貴?
※使用了不受支持的SSL協議是怎麼回事?
※如何看待 CNNIC 官方網站的證書改換成了 DigiCert 簽發的證書?
※Chrome下HTTPS證書的「沒有公開的審核記錄」是什麼意思?
TAG:SSL |