-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入淺出 HTTPS:從原理到實戰

( 簡體 字)
作者:虞衛東類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社深入淺出 HTTPS:從原理到實戰 3dWoo書號: 49216
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:6/1/2018
頁數:512
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121341786
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

序1

我們的網站、我們的App、我們的小程序是否有必要升級到HTTPS呢?這并不是一個新鮮的問題,幾年來一直困擾著大家。2015年百度搜索引擎完成其歷史上最大的系統性升級——全面由HTTP升級到HTTPS;2016年蘋果公告要求App Store中的所有應用在2017年1月1日之后都必須使用HTTPS加密連接;2017年1月9日微信上線小程序后,要求開發者的所有服務端請求必須為HTTPS;同時Google已調整搜索引擎算法,讓采用HTTPS的網站在搜索結果中排名更靠前,并宣布從2018年7月開始所有的HTTP網站將標記為“不安全”。是否有必要將系統升級到HTTPS,答案顯而易見!
當下的互聯網已不是20年前只提供新聞資訊、郵件收發服務的簡單互聯網了,更不是讓你安心網上沖浪的“潔凈”互聯網。互聯網尤其是移動互聯網,已經成為人們依賴度相當高的工具,餐飲、電影、購物、金融理財,甚至買汽車、租房、打車等都離不開它,移動互聯網已完成產品和服務的交易閉環。服務內容的升級與飛速發展,進一步放大了數據安全、被劫持或泄露的風險。近些年,用戶數據泄露、流量劫持、頁面篡改等安全事件頻發,這些安全事件往往會給個人或公司帶來非常大的經濟損失。
安全問題已成為企業的生存之本,而HTTP天然的安全弊端可能會讓企業產生不可挽回的巨大損失。在HTTP模式下,搜索或訪問請求以“明文信息”,經過代理服務器、路由器、WiFi熱點、服務運營商等“中間人”通路,這就形成了“中間人”獲取數據、篡改數據的可能。系統升級到HTTPS是企業的必行之路。
不就是做一個從HTTP到HTTPS的切換嗎?其實,背后卻是一個復雜的工程。系統從HTTP升級到HTTPS,并不是讓Web服務器支持HTTPS協議這么簡單,還需要考慮CDN、負載均衡、反向代理等服務器。同時要考慮在何種設備上部署證書及私鑰,涉及網絡架構和應用架構的變化。這些都需要考慮合理性,尤其要兼顧訪問速度與系統安全性。在部署過程中還必須保持業務的連續性,不能中斷業務,要穩定地響應用戶請求,做好HTTPS和HTTP的過渡和兼容。還要考慮Referer、Cookie等數據如何保持一致,如何避免出現訪問故障,復雜度幾乎是難以想象的。
一想到從HTTP升級到HTTPS的復雜度,很多人望而卻步、不知如何是好。或者硬著頭皮使用百度搜索各類HTTPS升級文章,研讀天書般的RFC文檔。網上的HTTPS升級文章好是好,也不乏實戰派好文,但大都寥寥幾筆,不能全面系統地介紹HTTPS基礎理論與實戰細則。而RFC文檔的學習門檻比較高,雖然理論講解透徹且專業,但實戰中遇到的問題需要讀者慢慢實操解決。
非常有幸成為本書的首批讀者,并應作者虞衛東之邀為此書寫序。逐章閱讀后,我深感本書覆蓋所有核心知識,并且易讀。我想這可能得益于作者2007年以來一直在負責大型系統的架構設計,并一次次解決新浪博客、新浪郵箱高負載下的系統難題與復雜的系統升級難題,積累了大量的一線實踐經驗。本書圍繞HTTPS應用知識體系,以實戰經驗、實戰工具為“術”,以結合每個關鍵點的實戰解決方法為“例”,詳細介紹了HTTP、HTTPS的常用知識,逐項解讀所涉及的密碼學、TLS協議、CA證書選擇及網站部署方式等關鍵點。內容易于讀者理解,可避免啃厚厚的RFC文檔和勞累檢索良莠不齊的各類HTTPS升級文章的辛勞。
同時作者邏輯清晰,于實戰核心處落筆。如果你是入門者,建議全篇深度學習,因為此書并不會贅述理論,但能幫助你建立完整的知識體系,補充你的實戰經驗。如果你想快速解決企業遇到的升級HTTPS難題,可以直接閱讀實戰解決方案,并把此書作為實戰手冊快速找到解決辦法,逐一攻克難關。
最后真心希望本書可以幫助更多企業和開發者實現HTTPS的平穩升級。

原新浪產品事業部副總經理 王?悅


序2

20年前,沒人會想到人類會在互聯網上建立如此龐大的業務生態。從衣食住行到教育金融,每個領域都經歷著巨大的網絡變革。隨著物聯網和大數據技術的興起,目前還沒有看到這一變革的盡頭。支撐互聯網變革的技術基礎中,HTTP是最為重要的應用層協議。
早期以信息發布為主的Web 1.0時代,HTTP已可以滿足絕大部分需要。證書費用、服務器的計算資源都比較昂貴,作為HTTP安全擴展的HTTPS,通常只應用在登錄、交易等少數環境中。但隨著越來越多的重要業務往線上轉移,網站對用戶隱私和安全性也越來越重視。對于防止惡意監聽、中間人攻擊、惡意劫持篡改,HTTPS是目前較為可行的方案,全站HTTPS逐漸成為主流網站的選擇。
微博已經在2017年實現了全站HTTPS。國外巨頭Google除自身已經全站實現HTTPS外,也已經在Chrome瀏覽器中對使用HTTP協議的網站在地址欄顯示“不安全”標簽,同時也對HTTP網站在搜索引擎中降低了權重。考慮到Google的瀏覽器和搜索引擎的市場份額,全站HTTPS將是所有網站比較迫切的需求。
從技術角度上看,HTTP/2作為新一代的協議,雖然協議文本中并未強制要求加密,但主流的瀏覽器(Firefox、Chrome、Safari、Opera、IE、Edge)已共同宣布,它們只支持實現基于TLS的HTTP/2,也就是說加密將是下一代協議的強制事實標準。
和HTTP/HTTPS取得的巨大成功相比,它們可供參考的書籍顯得非常匱乏。目前只有少量HTTP及HTTP/2書籍,大都定位于初學者,對專業開發和運維人員的需求照顧有限。相對于語言及框架類圖書動輒半個書架的陣勢,HTTP/HTTPS的資源實在太少了。
新浪郵箱作為國內歷史悠久的郵箱,對于用戶安全協議的實踐,應該說獲得了很多的經驗。我的同事虞衛東,長期從事新浪博客、新浪郵箱等Web技術研發,對于HTTPS理論和實踐頗有心得。在本書中,他系統地介紹了大量的基礎理論知識,如CRL校驗、OCSP模型、TLS協議等,并兼顧了如Wireshark在TLS/SSL協議中的使用、自動化測試HTTPS網站等實操。相信用心閱讀本書的讀者,一定可以從中深入了解他在這一領域的領悟。
微博技術團隊也樂于和廣大開發人員分享微博在HTTPS實踐中的心得,歡迎大家關注 @微博平臺架構 @微博技術學院 了解后續相關公開技術活動。

微博研發副總經理 楊衛華



前言

我的HTTPS學習之旅
2012年,我第一次接觸HTTPS,那時候HTTPS網站還沒有大規模部署,我想給自己的博客部署一張HTTPS證書,由于免費證書很少,最后花了近一個月時間才搞定,喜悅之情可想而知。
完成HTTPS網站部署后,我特別想了解HTTPS背后的原理,就在網絡上尋找相關的資料,讓人沮喪的是,國內的HTTPS資料非常少,大部分都是一些零星的知識,沒有系統性的介紹,而且很多信息非常不嚴謹,不同人對于同一個知識點的描述也存在差異,由于自己沒有十足的學習動力,HTTPS的初次學習之旅就結束了。
2016年,HTTPS又一次進入我的視野,主要有兩點原因。第一是當時我所在公司的產品經常遇到頁面篡改攻擊,通過部署HTTPS網站解決了該問題,完成工作后,我想進一步掌握HTTPS原理。第二是我使用Shadowsocks協議搭建了一個代理服務,很好奇Shadowsocks協議的加密原理,當時隱隱約約覺得HTTPS和Shadowsocks協議背后的原理應該是相通的。
為了系統學習HTTPS,我再一次搜索相關的中文資料,情況和2012年差不多,中文資料還是非常少,質量也參差不齊,比較好的資料來源于imququ.com,雖然imququ.com中HTTPS相關文章并不是特別多,但描述得非常好,而且具有實踐性。
國內很多介紹HTTPS的資料來自各大CDN公司,因為未來HTTPS網站部署和優化是非常重要的一個研究方向,CDN公司為了減少成本和提升性能,必然會進一步研究HTTPS。但必須指出,他們的文章更多是宣傳介紹自己的產品的,很少有誠意十足的分享。
第二個學習方式就是尋找專業的HTTPS書籍,正好《HTTPS權威指南》出版了,這本書應該算國內第一本介紹HTTPS的書籍,所以我第一時間就購買了,這本書翻譯自Bulletproof SSL and TLS: Understanding and Deploying SSL/TLS and PKI to Secure Servers and Web Applications,目前看來這本書并不適合初學者,原因在于它主要講解HTTPS漏洞,介紹協議原理、網站部署等內容的篇幅非常少,確切地說,它更適合了解HTTPS原理的讀者,但不可否認這是一本好書。
經過一段時間的摸索,我意識到學習HTTPS必須參考更多的英文資料,向讀者推薦兩本書,分別是Implementing SSL/TLS Using Cryptography and PKI和Network Security with OpenSSL: Cryptography for Secure Communications,這兩本書雖然出版時間比較早,很多知識點比較陳舊,但即使現在看來,仍然是非常權威和專業的HTTPS書籍。
很多讀者可能已經發現,這兩本書的書名中并沒有“HTTPS”字樣,關鍵詞是“SSL/TLS”和“OpenSSL”,此處重點解釋HTTPS和TLS/SSL之間的關系。對于讀者來說,重要的是掌握TLS/SSL原理,HTTPS其實是TLS/SSL的一個最重要的子應用,任何講解HTTPS的書籍和資料,其實都是在講解TLS/SSL,希望讀者明白兩者之間的關系,這對于學習至關重要。
我也非常困惑為什么專業的HTTPS書籍如此之少。為了進一步學習,我使用Google搜索、Wikipedia、Stack Overflow進行了大量的學習,找到了很多非常不錯的資料和網站(比如blog.cloudflare.com、Qualys SSL Labs),逐漸形成了自己的知識體系。我認識到學習HTTPS有四個關鍵步驟,分別是學習密碼學、OpenSSL、TLS/SSL和HTTPS,可見整個知識體系還是非常龐大的。
在學習之余,我也非常重視實踐和總結,在博客上寫了一些關于HTTPS的文章,沒想到訪問量還是非常不錯的,可見很多人也非常關心HTTPS網站的部署,這進一步增加了我的學習動力。
本書的淵源
2017年年初,博文視點的董英編輯看到我的博客,詢問我是否能寫一本專業的HTTPS書籍。由于自己從沒寫過書,所以我就告訴編輯,打算花一個月時間思考書的整體框架,如果覺得合適就去寫;如果覺得目前無法掌控就放棄,幸好,最后我還是寫了這本書。
這一個月我花費了大量的精力思考幾個問題:本書的讀者對象是誰?如何讓他們看明白本書?如何系統化地把HTTPS講清楚?書籍的內容是偏理論、實戰還是兩者兼而有之?如何組織書的目錄結構?章節的排序依據是什么?為了更好地講清楚,自己還要學習哪些知識?
我幾乎天天都在思考這些問題,最后抓住了兩個關鍵點,第一是根據自己的理解程度去寫,不浮夸,重實踐;第二是從一個初學者的角度去寫書。
我在寫本書之前,定了幾個寫作基調:
即使一個人從沒聽說過HTTPS,也能看明白這本書,并且學以致用。
充分考慮每個人的學習規律,循序漸進,由淺入深。
重理論、重實踐,既能學到原理知識,又能夠進行實踐,從而鞏固學習成果。
注重引導和啟發,比如密碼學知識我掌握得并不夠,所以不會著重描寫,但框架一定要清晰,以便讀者進一步學習。
通俗。希望本書容易理解,盡量減少讀者的學習難度。
一些體會
本書的撰寫過程是我的第三次HTTPS學習之旅,從動筆到完成初稿,整整花了一年的時間,每天至少花5個小時研究和寫書,越往后寫,越覺得TLS/SSL知識體系是如此龐大,需要研究很多領域,有幾次差點放棄,但最終還是堅持下來了。
寫作最大的動力還是來源于內心,內心渴望將HTTPS相關知識分享出來,為了提升書的質量,盡可能地尋找更多的資料,有的時候為了論證一個觀點,需要花好幾天時間,不斷地研究RFC文檔,不斷查看OpenSSL源代碼,只為讓自己的描述更嚴謹、更準確。
在具體寫作的時候也遇到了很多挑戰,有些章節寫完之后,個人感覺非常不好,考慮到讀者看了后可能會更迷惑,遇到這種情況就會選擇重寫,或者從另外一個角度重新組織語言。一本書的結構非常重要,直接影響用戶的理解,我花了很長的時間去組織,不斷地調整,不斷地換位思考,直到自己滿意為止。
還有一個主要的體會就是學習理解能力得到了極大的提升,對技術的理解也更加深刻了。相對來說現有HTTPS資料還是比較少的,學習過程很坎坷,不像編程語言,有大量的書籍和社區,學習過程會相對輕松。
在這個過程中,我也意識到自己并不是在學習HTTPS知識,而是在學習密碼學安全知識,在所有技術領域中,密碼學看似不重要,但卻是非常關鍵的一環,就像學習TCP/IP、操作系統等知識一樣,都是一個搭建基礎的過程,掌握好密碼學和TLS/SSL,未來再轉入其他領域,就會更加得心應手,比如現在流行的區塊鏈技術,其背后就包括密碼學知識。
在這個過程中,我自己的學習方法論也得到了提升,對于HTTPS知識來說,RFC和OpenSSL官方文檔可能是最權威、最專業的渠道,但這些文檔有個通病,描述非常枯燥,需要靜下心來仔細鉆研,才能夠掌握知識的精髓,而一旦打通這個環節,得到的收益將是巨大的。
寫完本書后,我意識到本書絕對不是自己HTTPS學習的終點,因為HTTPS體系越來越重要,也涌現了很多相關的技術。比如,TLS v1.3越來越成熟,可本書并沒有涉及相關的知識點;再比如,在編寫本書的時候谷歌宣布廢棄HPKP技術,可見整個HTTPS技術體系還在不斷完善,我還會繼續深入研究,也會以本書為基點,通過博客的形式分享給對HTTPS感興趣的人。
最后,必須說明一點,我對于HTTPS的理解還有非常大的提升空間,未來我會繼續在這一領域深耕。但本書是我的用心之作,希望讀者能夠以寬容、理解、幫助的心態對待它和我。
為什么選擇本書
首先回答為什么要掌握HTTPS,確切地說,是回答我們為什么要掌握TLS/SSL。
互聯網安全是非常重要的一個領域,而安全背后的核心就是密碼學算法。TLS/SSL組合了大部分密碼學算法,掌握了TLS/SSL,在一定程度上等同于理解了密碼學。
TLS/SSL是TCP/IP協議族中獨立的一個分層協議,重要性不言而喻,能夠解決互聯網中所有普適性的安全問題。只要提到安全,我們的第一反應就是思考能否引入TLS/SSL,是否能通過專門的密碼學算法解決,掌握了密碼學知識和TLS/SSL知識,在分析或者開發的時候會非常輕松。
總結一點,只要你是一個開發者,密碼學和TLS/SSL必須掌握。
然后再回答為什么選擇本書。
(1)本書是國內鮮有的HTTPS原創書籍,也是我的用心之作,就像工作一樣,態度有的時候比技能更重要,在寫本書的時候,我傾注了很多精力,借鑒了很多資料,對自己所有的觀點都通過實例進行了論證,最后以自己的方式將知識分享給讀者。
(2)我在Web領域做開發工作十余年,深刻明白Web技術體系的精髓,也明白什么知識才是核心和重要的,通過本書,我將自己的方法論分享給讀者。本書不僅描述知識,更希望成為一扇大門,讀者在閱讀的時候應該思考我為什么如此講解,希望讀者完成閱讀后能夠自己進一步學習HTTPS知識。
(3)本書盡量描述一些真正實用的知識,比如:不會描述類似TLS v1.1版本的知識,因為它已經過時了;對于讀者來說,可能更想對HTTPS網站進行調優,本書參考了很多最佳實踐,提出了很多中肯的建議;很多人在部署HTTPS網站的時候,可能需要免費證書,為此我花費很長時間研究Le’s Encrypt和Certbot,相信閱讀本書后,證書申請不再是難題。
(4)本書的知識很前沿,很少有書籍和資料基于TLS RFC文檔詳細講解,本書用很多篇幅從FRC的角度進行講解,最后還采用Wireshark工具對協議進行了解剖,讓讀者直觀地了解協議如何握手及交互。
(5)本書充分考慮讀者的實際情況,掌握TLS/SSL協議必須了解基礎的密碼學知識,否則學習的時候會非常煎熬。針對這種情況,本書從應用的角度而非原理的角度講解密碼學知識,為了避免枯燥,使用OpenSSL命令行工具講解算法應用,本書處處可見OpenSSL命令行工具,非常具有實踐性。
(6)在寫作的時候,我盡量使用最精確的語言,很注意書寫的流暢性,避免干擾讀者的理解,可以說我是本書的第一閱讀者,每時每刻都從讀者的角度去解讀。
總之,本書充分考慮了讀者的需求,將真正有用的知識分享給讀者,這也是本書最重要的價值。如果讀者想系統地學習HTTPS知識,那么閱讀本書是最好的方式,而選擇本書并不會存在語言鴻溝,本書是一扇通往HTTPS較好的大門。
什么人適合閱讀本書
那么什么人適合閱讀本書呢?只要你是一個開發者,曾經進行過Web開發(最好了解PHP開發,因為本書使用了一些PHP示例),同時具備一定的Linux操作知識(比如了解Shell,了解Nginx服務器安裝),那么閱讀本書不會存在任何障礙。
閱讀本書的人群主要如下:
Web開發者,包括前、后端開發人員。
網站運維人員。
Web系統架構師。
任何想了解密碼學、OpenSSL、HTTPS知識的人。
安全領域的開發者。
本書組織結構
結構性是一本書的精髓,我在挑選書籍的時候,第一步就是了解目錄結構,從中可以看出作者的思路及書的特點,從而判斷這本書是否適合自己閱讀。所以在編寫本書的時候,我對書的目錄結構做了精心的設計,前后調整了好幾次,充分考慮了讀者的閱讀習慣。
本書的每一章相對來說是獨立的,讀者可以跳躍式閱讀,同時每章之間又是有關聯的,每一章都有承上啟下的作用,使用由淺入深的方式講解。如果想系統地學習HTTPS,建議按照本書的目錄結構從前往后閱讀,這樣就能全面掌握知識的脈絡。
本書共10章,每章的大概內容如下。
第1章 HTTPS主要解決HTTP的安全問題,所以本章首先回顧了HTTP的基礎知識,以及不安全的根本原因。同時,HTTP是TCP/IP協議族中最重要的應用層協議,必須了解TCP/IP的基本原理和框架。最后必須明白Web安全和HTTPS安全是兩個完全不同的領域。
第2章 HTTPS背后的核心其實是密碼學算法,所以本章介紹了很多常用的密碼學算法,對算法的關鍵概念進行了講解,同時為了避免學習枯燥,以OpenSSL工具和PHP語言講解密碼學算法。密碼學算法非常關鍵,讀者閱讀本書后,建議找專業的密碼學書籍進行學習。
第3章 本章介紹了幾個關鍵概念,首先需要明白HTTPS其實是TLS/SSL的子應用,重點是學習TLS/SSL。本章以抽象的形式解釋了TLS/SSL的基本特點和工作原理。對于讀者來說,可能更關心如何搭建一個HTTPS網站,所以本章也介紹了實施HTTPS網站的必備條件。最后從用戶的角度,讓他們明白什么是HTTPS,如何知曉訪問的網站是安全的。
第4章 本章沒有太多的技術知識點,不同角色對于HTTPS的理解也是不同的,本章對HTTPS的必要性做了進一步的描述,并解答了一些常見的疑惑。
第5章 在了解了HTTPS的基本工作原理后,讀者希望快速搭建一個HTTPS網站,可以根據本章的內容搭建一個HTTPS網站,涉及的內容包括證書申請、服務器部署和全站HTTPS策略的三個關鍵技術。閱讀本章的時候,可以回顧第3章的內容。
第6章 本章介紹證書的核心概念,證書雖然不是TLS/SSL的一部分,但HTTPS必須引入證書才能保證絕對安全。本章介紹了證書的結構、屬性和擴展,并全面介紹了證書背后的密碼學原理,而掌握證書必須了解證書鏈的校驗原則。本章介紹了證書的三個關鍵技術(CRL、OCSP、OCSP封套),它們是證書的有效補充。本章的精華就是通過OpenSSL命令行工具對證書進行管理,比如查看證書結構、創建CSR文件、導入導出根證書、獲取證書等。
第7章 對于讀者來說,部署HTTPS網站最大的難題就是證書申請,而Let’s Encrypt是一個免費的CA機構,可以申請免費證書,所以本章重點講解了Let’s Encrypt的工作原理,以及全面講解Certbot客戶端的使用。本章可以結合第6章一起閱讀,全面掌握證書的內容。同時證書和TLS/SSL不是孤立存在的,其背后的密碼學原理是相通的。
第8章 本章是本書的核心,根據RFC文檔詳細講解了TLS/SSL細節,主要包括握手協議、協議擴展、會話恢復等。而為了更直觀地掌握協議原理,本章使用Wireshark網絡工具解剖了協議消息,使讀者可以從多個角度掌握協議。
第9章 本書最后兩章主要講解HTTPS最佳實踐策略,本章講解讀者最關心的兩個問題,分別是如何提升HTTPS網站性能,以及如何部署更安全的HTTPS網站。不管是協議性能還是安全性,密碼套件是其中最關鍵的概念,所以本章花了很多篇幅介紹密碼套件的概念和特點。
第10章 本章是最佳實踐的后半部分,介紹了很多工具和網站,實踐性非常強。首先介紹了Cloudflare和Mozilla推薦的兩個工具,通過這兩個工具,能夠搭建出非常棒的HTTPS網站。其次講解HTTPS網站測試工具,首推SSL Labs工具包,建議讀者重點關注該網站。再次系統介紹了OpenSSL命令行工具,學習TLS/SSL最好的工具其實就是OpenSSL,很多HTTPS工具都是對OpenSSL命令行的進一步封裝。接著介紹了如何在Nginx服務器上配置HTTPS網站,詳細介紹了ngx_http_ssl_module模塊的各個指令。最后描述了大型網站如何有效地進行部署、優化。
寫完本書后,考慮到HTTPS的中文資料非常少,也不成體系,所以我專門申請了一個域名(simplehttps.com),希望構建一個良好的知識學習平臺,具體的運作形式還沒想好,歡迎大家給我一些建議。初步的設想就是匯眾一些博客文章和資料,作為學習HTTPS知識的入口。
致謝
感謝?悅,從整體結構上給本書提供了很多建設性的意見,非常感謝他為本書作序,他是我最尊敬的技術領導。同時也感謝公司的技術大牛衛華為本書作序,以及其他四位專家的寶貴推薦。感謝博文視點的董英編輯和她的同事們,讓我認識到編輯工作的專業性,以及一絲不茍的態度。感謝老婆的默默付出,讓我有足夠的時間和精力去寫這本書,感謝閨女帶來家庭快樂,希望老婆健健康康、開心生活,閨女健康成長。
內容簡介:

本書是一本專業的HTTPS書籍,全面講解了HTTPS領域的相關知識,內容包括密碼學、OpenSSL命令行、證書、TLS協議、HTTPS網站性能優化、HTTPS網站優秀實踐、大型網站HTTPS架構設計等。本書有幾個特點:(1)內容全面而新穎,基于RFC文檔、國外書籍、社區等一手資料,總結了大部分最新的HTTPS知識;(2)由淺入深,從基礎到進階全面掌握HTTPS,讀者能夠輕松構建一個HTTPS網站,并使網站安全性和性能最大化,對于大型網站的HTTPS系統架構和應用架構設計也有指導意義;(3)內容通俗易懂,用語描述精準,充分考慮到讀者的閱讀和思考習慣,只要具備基礎的HTTPS知識和Linux知識就能無障礙閱讀;(4)理論結合實踐,本書除了讓讀者掌握HTTPS的交互細節,更注重實踐,介紹了很多工具,讓讀者更好地掌握HTTPS;(5)具有啟發性,讀者可以通過本書開啟密碼學和HTTPS學習之門,真正做到“深入”。HTTPS(TLS協議)重點在于密碼學,互聯網安全是第一位的,所以任何技術領域(比如目前火爆的區塊鏈)都需要密碼學和HTTPS(TLS協議)知識,架構人員、開發人員、運維人員都適合閱讀本書。

目錄:

第1章 HTTP介紹 1
1.1 什么是Web 1
1.1.1 廣義理解Web 1
1.1.2 Web的組成 2
1.2 理解HTTP 4
1.2.1 HTTP的定義 4
1.2.2 HTTP語義 5
1.2.3 HTTP的特點 8
1.3 網絡模型 9
1.3.1 TCP/IP概述 9
1.3.2 Socket和TCP 12
1.4 協議安全分析 13
1.4.1 安全問題舉例 13
1.4.2 協議不安全的根本原因 14
1.5 Web應用安全 15
1.5.1 瀏覽器、HTML和JavaScript 16
1.5.2 W3C 17
第2章 密碼學 19
2.1 對于密碼學的認知 19
2.1.1 基本認知 19
2.1.2 密碼學的四個目標 21
2.1.3 OpenSSL 22
2.2 隨機數 25
2.2.1 隨機數的類型 25
2.2.2 隨機數的工作原理 26
2.2.3 常見的隨機數生成器 26
2.2.4 密碼學算法中的隨機數 27
2.3 Hash算法 27
2.3.1 加密基元 28
2.3.2 Hash算法和密碼學Hash算法 28
2.3.3 密碼學Hash算法的特性 29
2.3.4 Hash算法的用途 29
2.3.5 什么是安全的密碼學Hash算法 30
2.3.6 密碼學Hash算法的分類 31
2.4 對稱加密算法 33
2.4.1 流密碼算法 34
2.4.2 塊密碼算法 36
2.4.3 填充標準 41
2.4.4 對稱加密算法實踐 42
2.5 消息驗證碼 47
2.5.1 什么是消息驗證碼 47
2.5.2 MAC算法的種類 49
2.5.3 消息驗證碼算法實踐 49
2.5.4 加密算法不能提供完整性 50
2.5.5 AD加密模式 52
2.5.6 AEAD加密模式 53
2.6 公開密鑰算法 54
2.6.1 理解RSA的內部結構 55
2.6.2 PKCS標準 56
2.6.3 RSA加密算法的應用場景 58
2.6.4 RSA加密算法實踐 59
2.7 密鑰 62
2.7.1 生成密鑰 63
2.7.2 口令和PEB算法 63
2.7.3 密鑰存儲和傳輸 66
2.8 密鑰協商算法 67
2.8.1 RSA密鑰協商算法 68
2.8.2 DH密鑰協商算法 69
2.8.3 DH算法分類 71
2.8.4 DH密鑰協商算法實踐 71
2.9 橢圓曲線密碼學 73
2.9.1 ECC算法的基本模型 74
2.9.2 使用OpenSSL了解命名曲線 75
2.9.3 ECDH協商算法 76
2.9.4 命名曲線 77
2.10 數字簽名 79
2.10.1 數字簽名的用途 79
2.10.2 數字簽名的流程 80
2.10.3 RSA數字簽名算法 81
2.10.4 RSA數字簽名實踐 81
2.11 DSA數字簽名算法 83
2.11.1 內部結構 84
2.11.2 DSA算法實踐 85
2.11.3 ECDSA算法 87
2.11.4 ECDSA算法實踐 88
2.12 算法安全性和性能 90
2.12.1 密鑰長度與算法安全性 90
2.12.2 密碼學性能 91
第3章 宏觀理解TLS 101
3.1 TLS/SSL協議綜述 101
3.1.1 TLS/SSL協議的歷史 101
3.1.2 正確認知TLS/SSL協議 102
3.1.3 TLS/SSL協議的目標 103
3.1.4 OpenSSL和TLS/SSL的關系 104
3.1.5 HTTPS和TLS/SSL的關系 105
3.1.6 TLS/SSL協議的一些實現 106
3.2 TLS/SSL協議背后的算法 107
3.2.1 加密算法和MAC算法 107
3.2.2 密鑰協商算法 108
3.2.3 前向安全性 110
3.2.4 密鑰衍生算法 111
3.2.5 中間人攻擊 112
3.2.6 PKI 114
3.3 HTTPS總結 117
3.3.1 握手 119
3.3.2 加密 125
3.4 實施HTTPS網站的必備條件 125
3.4.1 證書和密鑰對 126
3.4.2 部署和配置HTTPS網站 126
3.4.3 全站HTTPS策略 127
3.5 從用戶的角度看HTTPS 128
3.5.1 綠色小鎖圖標 128
3.5.2 TLS/SSL握手失敗 129
3.5.3 混合內容 131
第4章 選擇HTTPS的必要性和疑惑 134
4.1 部署HTTPS的疑惑 134
4.1.1 網站好像沒有隱私數據 134
4.1.2 復雜性 135
4.1.3 成本 137
4.1.4 性能 137
4.1.5 外部資源不支持HTTPS 138
4.1.6 收益和時間對比 139
4.2 部署HTTPS的必要性 140
4.2.1 HTTP/2帶來的性能提升 140
4.2.2 趨勢 140
4.2.3 企業形象 142
4.2.4 HTML5的特性 142
4.2.5 iOS ATS的安全要求 143
4.2.6 Chrome和Firefox所做的努力 143
4.2.7 SEO排名和谷歌Analytics 144

第5章 快速搭建一個HTTPS網站 145
5.1 HTTPS網站構建分析 145
5.2 獲取證書和密鑰對 146
5.2.1 自簽名證書 147
5.2.2 向CA機構申請證書 148
5.2.3 使用Let’s Encrypt證書 149
5.3 部署證書和密鑰對 150
5.3.1 Nginx配置 150
5.3.2 Apache配置 151
5.4 測試HTTPS 152
5.5 301重定向 154
5.6 HSTS 155
5.6.1 什么是HSTS 155
5.6.2 HSTS實踐 158
5.6.3 瀏覽器支持 158
5.6.4 HSTS Preloading 159
5.7 CSP 159
5.7.1 如何消除混合內容 159
5.7.2 什么是CSP 160
5.7.3 瀏覽器的兼容性 161
5.7.4 CSP實踐 161
第6章 證書 165
6.1 X.509標準和PKI 165
6.1.1 X.509標準 166
6.1.2 PKI的組成 166
6.1.3 X.509標準的內容 167
6.2 證書 167
6.2.1 ASN.1 167
6.2.2 證書結構 168
6.2.3 CSR 172
6.2.4 證書擴展 174
6.2.5 證書分類 177
6.3 證書鏈 180
6.3.1 證書類型 180
6.3.2 信任原理 182
6.3.3 信任鏈校驗 183
6.3.4 信任錨 184
6.3.5 委派和交叉認證 186
6.3.6 證書完整校驗 189
6.4 CRL 190
6.4.1 證書過期和吊銷 190
6.4.2 證書被吊銷的原因 191
6.4.3 CRL是什么 191
6.4.4 CRL校驗 192
6.4.5 CRL的結構 193
6.4.6 CRL存在的問題 195
6.5 OCSP 196
6.5.1 OCSP是什么 196
6.5.2 OCSP模型概述 197
6.5.3 OCSP詳解 200
6.6 OCSP封套 204
6.6.1 OCSP的優缺點 204
6.6.2 OCSP封套的工作原理 205
6.6.3 OCSP封套的優點 206
6.6.4 OCSP封套的兼容性 207
6.7 OpenSSL命令行管理證書 207
6.7.1 證書格式 207
6.7.2 證書的其他格式 208
6.7.3 獲取線上證書 209
6.7.4 導入證書到根證書庫 213
6.7.5 OpenSSL管理CSR 216
6.7.6 OpenSSL生成證書 218
6.7.7 OpenSSL查看證書 218
6.7.8 校驗CRL 224
6.7.9 校驗OCSP 227
6.7.10 校驗OCSP封套 232
6.8 其他 233
6.8.1 如何選擇一個CA機構 233
6.8.2 證書的透明度 236
第7章 Let’s Encrypt免費證書 244
7.1 Let’s Encrypt 244
7.1.1 Let’s Encrypt CA機構的特點 244
7.1.2 Let’s Encrypt證書的特點 245
7.2 Let’s Encrypt工作原理 248
7.2.1 域名校驗過程 248
7.2.2 請求、更新、續期、撤銷證書流程 249
7.3 Certbot客戶端 249
7.3.1 安裝Certbot客戶端 250
7.3.2 用戶注冊 250
7.3.3 獲取和安裝證書 251
7.3.4 Certbot Nginx插件 252
7.3.5 Certbot Apache插件 255
7.3.6 Certbot Webroot插件 257
7.3.7 Certbot Standalone插件 259
7.3.8 Certbot Manual插件 259
7.3.9 Certbot管理證書 260
7.3.10 Certbot查看證書 261
7.3.11 Certbot撤銷證書 262
7.3.12 Certbot Revoking證書 262
7.3.13 Certbot高級操作 263
7.4 Let’s Encrypt的其他信息 264
第8章 TLS協議分析 267
8.1 如何理解RFC文檔 267
8.2 描述語言 270
8.3 TLS/SSL協議概述 273
8.4 TLS記錄層協議 278
8.4.1 連接狀態 278
8.4.2 TLS記錄層協議的處理步驟 281
8.5 TLS/SSL握手協議 288
8.5.1 Client Hello子消息 291
8.5.2 Server Hello子消息 292
8.5.3 Server Certificate子消息 293
8.5.4 Server Key Exchange子消息 295
8.5.5 Server Hello Done子消息 299
8.5.6 Client Key Exchange子消息 299
8.5.7 計算主密鑰和密鑰塊 301
8.5.8 Change Cipher Spec協議 304
8.5.9 Finished子消息 304
8.6 擴展 306
8.6.1 ECC橢圓曲線擴展 308
8.6.2 signed_certificate_timestamp 309
8.6.3 Status Request擴展 310
8.6.4 renegotiation_info重協商擴展 312
8.6.5 ALPN擴展 312
8.6.6 Maximum Fragment Length擴展 313
8.6.7 SNI擴展 313
8.6.8 Signature Algorithms擴展 314
8.7 基于Session ID的會話恢復 316
8.7.1 什么是會話 316
8.7.2 Session ID的工作原理 317
8.7.3 Session ID的優缺點 319
8.8 SessionTicket 319
8.8.1 SessionTicket的應用場景 320
8.8.2 SessionTicket的交互流程 320
8.8.3 SessionTicket TLS擴展 322
8.8.4 NewSessionTicket握手子消息 323
8.8.5 兩種會話恢復方式如何共存 325
8.9 使用Wireshark學習TLS/SSL協議 325
8.9.1 Wireshark的幾個使用技巧 326
8.9.2 使用Wireshark分析TLS/SSL協議 329
第9章 HTTPS性能和安全 347
9.1 密碼套件 347
9.1.1 密碼套件編號 349
9.1.2 關鍵字和關鍵字修飾符 349
9.1.3 密碼套件一覽 360
9.2 安全性 364
9.2.1 已知的安全漏洞 366
9.2.2 常規建議 371
9.2.3 密碼套件 373
9.2.4 前向安全性 377
9.2.5 證書 378
9.2.6 從客戶端審視安全性 381
9.2.7 應用層安全建議 383
9.3 性能 385
9.3.1 網絡層優化 386
9.3.2 應用層優化 389
9.3.3 HTTP/2優化 391
9.3.4 TLS/SSL優化 399
9.3.5 TLS/SSL優化方案 402
第10章 HTTPS網站實戰 414
10.1 工具化配置HTTPS 414
10.1.1 SSL Configuration Generator 415
10.1.2 Cloudflare推薦的配置 421
10.2 自動化測試HTTPS網站 426
10.2.1 SSL Server Test 426
10.2.2 SSL Client Test 433
10.2.3 SSL Pulse 436
10.3 OpenSSL命令行工具 439
10.3.1 s_client工具 440
10.3.2 s_server工具 447
10.3.3 其他工具 451
10.4 實戰HTTPS網站部署 454
10.4.1 使用Nginx+OpenSSL部署HTTPS網站 455
10.4.2 使用Nginx+BoringSSL部署HTTPS網站 470
10.5 大型網站部署HTTPS 471
10.5.1 系統架構 472
10.5.2 HTTPS網站的部署方式 476
10.5.3 其他部署問題 484
序: