书海网短评:
★国内鲜有的专业HTTPS书籍,HTTPS实践指南★集理论与实践于一体,由浅入深、通俗易懂★以TLS1.2协议为主,描述前沿的知识和工具★全方位深刻解剖Web安全相关体系结构的知识
★国内鲜有的专业HTTPS书籍,HTTPS实践指南
★集理论与实践于一体,由浅入深、通俗易懂
★以TLS1.2协议为主,描述前沿的知识和工具
★全方位深刻解剖Web安全相关体系结构的知识
★作者有十多年一线实践经验,深刻理解Web精髓
★《深入浅出 HTTPS:从原理到实战》不仅是HTTPS专著,更是经验和方法论分享
★书中含大量实例,极具实践性,读者更好理解
★如果你想了解Web安全、部署HTTPS网站、
部署HTTP/2网站、优化网站性能,
那么《深入浅出 HTTPS:从原理到实战》是你的一个极好的选择。
《深入浅出HTTPS:从原理到实战》是一本专业的HTTPS书籍,全面讲解了HTTPS领域的相关知识,内容包括密码学、OpenSSL命令行、证书、TLS协议、HTTPS网站性能优化、HTTPS网站优秀实践、大型网站HTTPS架构设计等。《深入浅出HTTPS:从原理到实战》有几个特点:(1)内容全面而新颖,基于RFC文档、国外书籍、社区等一手资料,总结了大部分新的HTTPS知识;(2)由浅入深,从基础到进阶全面掌握HTTPS,读者能够轻松构建一个HTTPS网站,并使网站安全性和性能大化,对于大型网站的HTTPS系统架构和应用架构设计也有指导意义;(3)内容通俗易懂,用语描述精准,充分考虑到读者的阅读和思考习惯,只要具备基础的HTTPS知识和Linux知识就能无障碍阅读;(4)理论结合实践,《深入浅出 HTTPS:从原理到实战》除了让读者掌握HTTPS的交互细节,更注重实践,介绍了很多工具,让读者更好地掌握HTTPS;(5)具有启发性,读者可以通过《深入浅出HTTPS:从原理到实战》开启密码学和HTTPS学习之门,真正做到“深入”。
HTTPS(TLS协议)重点在于密码学,互联网安全是首位的,所以任何技术领域(比如目前火爆的区块链)都需要密码学和HTTPS(TLS协议)知识,架构人员、开发人员、运维人员都适合阅读《深入浅出HTTPS:从原理到实战》。
虞卫东,网名虞大胆,新浪网高级技术经理。曾先后供职过新浪博客产品部和赶集网移动事业部。在新浪博客工作多年,担任过开发工程师、技术经理、应用架构师等,负责新浪博客的开发、运维、设计、性能优化等工作。在赶集网担任过技术总监,负责赶集网客户端后端开发工作。十余年来一直致力于Web后端开发,积累了丰富的架构设计、开发、运维经验,擅长PHP、Python等开发语言。
《深入浅出 HTTPS:从原理到实战》集理论、协议细节、漏洞分析、架构部署于一体,是一份非常详尽的Web应用安全指南,作者是一个具有10多年大型网站开发经验的一线开发者和资深架构师。在《深入浅出 HTTPS:从原理到实战》中,作者站在开发者的角度,从密码学基础、TLS协议、PKI体系、HTTPS安全及性能、安全网站实践等方面,全方位解读了HTTPS,《深入浅出 HTTPS:从原理到实战》也是作者多年工作经验的总结。更难得的是,虽然密码学、HTTPS相关知识比较晦涩,但是《深入浅出 HTTPS:从原理到实战》阅读起来非常轻松,强烈建议对HTTPS技术有需求的读者阅读《深入浅出 HTTPS:从原理到实战》。
——新浪邮箱技术负责人、资深架构师朱欢
卫东深入浅出地从概念、理论、指令、实操等多个层次、多个角度对HTTPS做了完整的阐述,《深入浅出 HTTPS:从原理到实战》是学习密码学基础、网络开发和安全知识不可多得的一本好书。《深入浅出 HTTPS:从原理到实战》手把手引导读者如何应用HTTPS,入门门槛低,同时内容很有深度,对于高阶HTTPS用户来说也有很多值得参考和借鉴的地方。《深入浅出 HTTPS:从原理到实战》也可以当作一本网络安全科普书来读,感谢作者的辛勤付出!
——原京东商城网站首席架构师隋剑峰
《深入浅出 HTTPS:从原理到实战》由浅入深、通俗易懂地讲述了HTTPS原理,并给出实例方便读者加深理解。通读《深入浅出 HTTPS:从原理到实战》对于开发、安全、架构等都非常有帮助,对于每一位优秀的开发者来说,如果希望构建更安全、更可靠的系统,那么《深入浅出 HTTPS:从原理到实战》非常值得一读,并可以增强内功!
——医渡云安全总监刘袁君
HTTP设计之初就没有考虑安全性问题,导致信息泄露、流量劫持等安全问题频出,现如今BATJ等互联网公司都完成了全站HTTPS的迁移,HTTPS是大势所趋,但是部署HTTPS是一个系统工程,稍有不慎,就有可能适得其反,导致用户访问延时增加,吞吐率下降。《深入浅出 HTTPS:从原理到实战》系统地讲述了HTTPS的上下游知识,既有密码学理论,又有工程实践,相信会对阅读《深入浅出 HTTPS:从原理到实战》的你很有帮助。
——京东金融技术专家吴建苗
第1章HTTP介绍1
1.1什么是Web1
1.1.1广义理解Web1
1.1.2Web的组成2
1.2理解HTTP4
1.2.1HTTP的定义4
1.2.2HTTP语义5
1.2.3HTTP的特点8
1.3网络模型9
1.3.1TCP/IP概述9
1.3.2Socket和TCP12
1.4协议安全分析13
1.4.1安全问题举例13
1.4.2协议不安全的根本原因14
1.5Web应用安全15
1.5.1浏览器、HTML和JavaScript16
1.5.2W3C17
第2章密码学19
2.1对于密码学的认知19
2.1.1基本认知19
2.1.2密码学的四个目标21
2.1.3OpenSSL22
2.2随机数25
2.2.1随机数的类型25
2.2.2随机数的工作原理26
2.2.3常见的随机数生成器26
2.2.4密码学算法中的随机数27
2.3Hash算法27
2.3.1加密基元28
2.3.2Hash算法和密码学Hash算法28
2.3.3密码学Hash算法的特性29
2.3.4Hash算法的用途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.2MAC算法的种类49
2.5.3消息验证码算法实践49
2.5.4加密算法不能提供完整性50
2.5.5AD加密模式52
2.5.6AEAD加密模式53
2.6公开密钥算法54
2.6.1理解RSA的内部结构55
2.6.2PKCS标准56
2.6.3RSA加密算法的应用场景58
2.6.4RSA加密算法实践59
2.7密钥62
2.7.1生成密钥63
2.7.2口令和PEB算法63
2.7.3密钥存储和传输66
2.8密钥协商算法67
2.8.1RSA密钥协商算法68
2.8.2DH密钥协商算法69
2.8.3DH算法分类71
2.8.4DH密钥协商算法实践71
2.9椭圆曲线密码学73
2.9.1ECC算法的基本模型74
2.9.2使用OpenSSL了解命名曲线75
2.9.3ECDH协商算法76
2.9.4命名曲线77
2.10数字签名79
2.10.1数字签名的用途79
2.10.2数字签名的流程80
2.10.3RSA数字签名算法81
2.10.4RSA数字签名实践81
2.11DSA数字签名算法83
2.11.1内部结构84
2.11.2DSA算法实践85
2.11.3ECDSA算法87
2.11.4ECDSA算法实践88
2.12算法安全性和性能90
2.12.1密钥长度与算法安全性90
2.12.2密码学性能91
第3章宏观理解TLS101
3.1TLS/SSL协议综述101
3.1.1TLS/SSL协议的历史101
3.1.2正确认知TLS/SSL协议102
3.1.3TLS/SSL协议的目标103
3.1.4OpenSSL和TLS/SSL的关系104
3.1.5HTTPS和TLS/SSL的关系105
3.1.6TLS/SSL协议的一些实现106
3.2TLS/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.6PKI114
3.3HTTPS总结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从用户的角度看HTTPS128
3.5.1绿色小锁图标128
3.5.2TLS/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外部资源不支持HTTPS138
4.1.6收益和时间对比139
4.2部署HTTPS的必要性140
4.2.1HTTP/2带来的性能提升140
4.2.2趋势140
4.2.3企业形象142
4.2.4HTML5的特性142
4.2.5iOSATS的安全要求143
4.2.6Chrome和Firefox所做的努力143
4.2.7SEO排名和谷歌Analytics144
第5章快速搭建一个HTTPS网站145
5.1HTTPS网站构建分析145
5.2获取证书和密钥对146
5.2.1自签名证书147
5.2.2向CA机构申请证书148
5.2.3使用Let’sEncrypt证书149
5.3部署证书和密钥对150
5.3.1Nginx配置150
5.3.2Apache配置151
5.4测试HTTPS152
5.5301重定向154
5.6HSTS155
5.6.1什么是HSTS155
5.6.2HSTS实践158
5.6.3浏览器支持158
5.6.4HSTSPreloading159
5.7CSP159
5.7.1如何消除混合内容159
5.7.2什么是CSP160
5.7.3浏览器的兼容性161
5.7.4CSP实践161
第6章证书165
6.1X.509标准和PKI165
6.1.1X.509标准166
6.1.2PKI的组成166
6.1.3X.509标准的内容167
6.2证书167
6.2.1ASN.1167
6.2.2证书结构168
6.2.3CSR172
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.4CRL190
6.4.1证书过期和吊销190
6.4.2证书被吊销的原因191
6.4.3CRL是什么191
6.4.4CRL校验192
6.4.5CRL的结构193
6.4.6CRL存在的问题195
6.5OCSP196
6.5.1OCSP是什么196
6.5.2OCSP模型概述197
6.5.3OCSP详解200
6.6OCSP封套204
6.6.1OCSP的优缺点204
6.6.2OCSP封套的工作原理205
6.6.3OCSP封套的优点206
6.6.4OCSP封套的兼容性207
6.7OpenSSL命令行管理证书207
6.7.1证书格式207
6.7.2证书的其他格式208
6.7.3获取线上证书209
6.7.4导入证书到根证书库213
6.7.5OpenSSL管理CSR216
6.7.6OpenSSL生成证书218
6.7.7OpenSSL查看证书218
6.7.8校验CRL224
6.7.9校验OCSP227
6.7.10校验OCSP封套232
6.8其他233
6.8.1如何选择一个CA机构233
6.8.2证书的透明度236
第7章Let’sEncrypt免费证书244
7.1Let’sEncrypt244
7.1.1Let’sEncryptCA机构的特点244
7.1.2Let’sEncrypt证书的特点245
7.2Let’sEncrypt工作原理248
7.2.1域名校验过程248
7.2.2请求、更新、续期、撤销证书流程249
7.3Certbot客户端249
7.4Let’sEncrypt的其他信息264
第8章TLS协议分析267
8.1如何理解RFC文档267
8.2描述语言270
8.3TLS/SSL协议概述273
8.4TLS记录层协议278
8.5TLS/SSL握手协议288
8.6扩展306
8.7基于SessionID的会话恢复316
8.8SessionTicket319
8.9使用Wireshark学习TLS/SSL协议325
第9章HTTPS性能和安全347
9.1密码套件347
9.2安全性364
9.3性能385
第10章HTTPS网站实战414
10.1工具化配置HTTPS414
10.2自动化测试HTTPS网站426
10.3OpenSSL命令行工具439
10.4实战HTTPS网站部署454
10.5大型网站部署HTTPS471
序1
——原新浪产品事业部副总经理王廼悦
我们的网站、我们的App、我们的小程序是否有必要升级到HTTPS呢?这并不是一个新鲜的问题,几年来一直困扰着大家。2015年百度搜索引擎完成其历史上最大的系统性升级——全面由HTTP升级到HTTPS;2016年苹果公告要求AppStore中的所有应用在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文档的学习门槛比较高,虽然理论讲解透彻且专业,但实战中遇到的问题需要读者慢慢实操解决。
非常有幸成为《深入浅出 HTTPS:从原理到实战》的首批读者,并应作者虞卫东之邀为此书写序。逐章阅读后,我深感《深入浅出 HTTPS:从原理到实战》覆盖所有核心知识,并且易读。我想这可能得益于作者2007年以来一直在负责大型系统的架构设计,并一次次解决新浪博客、新浪邮箱高负载下的系统难题与复杂的系统升级难题,积累了大量的一线实践经验。《深入浅出 HTTPS:从原理到实战》围绕HTTPS应用知识体系,以实战经验、实战工具为“术”,以结合每个关键点的实战解决方法为“例”,详细介绍了HTTP、HTTPS的常用知识,逐项解读所涉及的密码学、TLS协议、CA证书选择及网站部署方式等关键点。内容易于读者理解,可避免啃厚厚的RFC文档和劳累检索良莠不齐的各类HTTPS升级文章的辛劳。
同时作者逻辑清晰,于实战核心处落笔。如果你是入门者,建议全篇深度学习,因为此书并不会赘述理论,但能帮助你建立完整的知识体系,补充你的实战经验。如果你想快速解决企业遇到的升级HTTPS难题,可以直接阅读实战解决方案,并把此书作为实战手册快速找到解决办法,逐一攻克难关。
最后真心希望《深入浅出 HTTPS:从原理到实战》可以帮助更多企业和开发者实现HTTPS的平稳升级。
序2
——微博研发副总经理杨卫华
20年前,没人会想到人类会在互联网上建立如此庞大的业务生态。从衣食住行到教育金融,每个领域都经历着巨大的网络变革。随着物联网和大数据技术的兴起,目前还没有看到这一变革的尽头。支撑互联网变革的技术基础中,HTTP是最为重要的应用层协议。
早期以信息发布为主的Web1.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理论和实践颇有心得。在《深入浅出 HTTPS:从原理到实战》中,他系统地介绍了大量的基础理论知识,如CRL校验、OCSP模型、TLS协议等,并兼顾了如Wireshark在TLS/SSL协议中的使用、自动化测试HTTPS网站等实操。相信用心阅读《深入浅出 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:从原理到实战》应该算国内第一本介绍HTTPS的书籍,所以我第一时间就购买了,这《深入浅出 HTTPS:从原理到实战》翻译自BulletproofSSLandTLS:UnderstandingandDeployingSSL/TLSandPKItoSecureServersandWebApplications,目前看来这《深入浅出 HTTPS:从原理到实战》并不适合初学者,原因在于它主要讲解HTTPS漏洞,介绍协议原理、网站部署等内容的篇幅非常少,确切地说,它更适合了解HTTPS原理的读者,但不可否认这是一本好书。
经过一段时间的摸索,我意识到学习HTTPS必须参考更多的英文资料,向读者推荐两《深入浅出 HTTPS:从原理到实战》,分别是ImplementingSSL/TLSUsingCryptographyandPKI和NetworkSecuritywithOpenSSL:CryptographyforSecureCommunications,这两《深入浅出 HTTPS:从原理到实战》虽然出版时间比较早,很多知识点比较陈旧,但即使现在看来,仍然是非常权威和专业的HTTPS书籍。
很多读者可能已经发现,这两《深入浅出 HTTPS:从原理到实战》的书名中并没有“HTTPS”字样,关键词是“SSL/TLS”和“OpenSSL”,此处重点解释HTTPS和TLS/SSL之间的关系。对于读者来说,重要的是掌握TLS/SSL原理,HTTPS其实是TLS/SSL的一个最重要的子应用,任何讲解HTTPS的书籍和资料,其实都是在讲解TLS/SSL,希望读者明白两者之间的关系,这对于学习至关重要。
我也非常困惑为什么专业的HTTPS书籍如此之少。为了进一步学习,我使用Google搜索、Wikipedia、StackOverflow进行了大量的学习,找到了很多非常不错的资料和网站(比如blog.cloudflare.com、QualysSSLLabs),逐渐形成了自己的知识体系。我认识到学习HTTPS有四个关键步骤,分别是学习密码学、OpenSSL、TLS/SSL和HTTPS,可见整个知识体系还是非常庞大的。
在学习之余,我也非常重视实践和总结,在博客上写了一些关于HTTPS的文章,没想到访问量还是非常不错的,可见很多人也非常关心HTTPS网站的部署,这进一步增加了我的学习动力。
《深入浅出 HTTPS:从原理到实战》的渊源
2017年年初,博文视点的董英编辑看到我的博客,询问我是否能写一本专业的HTTPS书籍。由于自己从没写过书,所以我就告诉编辑,打算花一个月时间思考书的整体框架,如果觉得合适就去写;如果觉得目前无法掌控就放弃,幸好,最后我还是写了这《深入浅出 HTTPS:从原理到实战》。
这一个月我花费了大量的精力思考几个问题:《深入浅出 HTTPS:从原理到实战》的读者对象是谁?如何让他们看明白《深入浅出 HTTPS:从原理到实战》?如何系统化地把HTTPS讲清楚?书籍的内容是偏理论、实战还是两者兼而有之?如何组织书的目录结构?章节的排序依据是什么?为了更好地讲清楚,自己还要学习哪些知识?
我几乎天天都在思考这些问题,最后抓住了两个关键点,第一是根据自己的理解程度去写,不浮夸,重实践;第二是从一个初学者的角度去写书。
我在写《深入浅出 HTTPS:从原理到实战》之前,定了几个写作基调:
√即使一个人从没听说过HTTPS,也能看明白这《深入浅出 HTTPS:从原理到实战》,并且学以致用。
√充分考虑每个人的学习规律,循序渐进,由浅入深。
√重理论、重实践,既能学到原理知识,又能够进行实践,从而巩固学习成果。
√注重引导和启发,比如密码学知识我掌握得并不够,所以不会着重描写,但框架一定要清晰,以便读者进一步学习。
√通俗。希望《深入浅出 HTTPS:从原理到实战》容易理解,尽量减少读者的学习难度。
一些体会
《深入浅出 HTTPS:从原理到实战》的撰写过程是我的第三次HTTPS学习之旅,从动笔到完成初稿,整整花了一年的时间,每天至少花5个小时研究和写书,越往后写,越觉得TLS/SSL知识体系是如此庞大,需要研究很多领域,有几次差点放弃,但最终还是坚持下来了。
写作最大的动力还是来源于内心,内心渴望将HTTPS相关知识分享出来,为了提升书的质量,尽可能地寻找更多的资料,有的时候为了论证一个观点,需要花好几天时间,不断地研究RFC文档,不断查看OpenSSL源代码,只为让自己的描述更严谨、更准确。
在具体写作的时候也遇到了很多挑战,有些章节写完之后,个人感觉非常不好,考虑到读者看了后可能会更迷惑,遇到这种情况就会选择重写,或者从另外一个角度重新组织语言。一《深入浅出 HTTPS:从原理到实战》的结构非常重要,直接影响用户的理解,我花了很长的时间去组织,不断地调整,不断地换位思考,直到自己满意为止。
还有一个主要的体会就是学习理解能力得到了极大的提升,对技术的理解也更加深刻了。相对来说现有HTTPS资料还是比较少的,学习过程很坎坷,不像编程语言,有大量的书籍和社区,学习过程会相对轻松。
在这个过程中,我也意识到自己并不是在学习HTTPS知识,而是在学习密码学安全知识,在所有技术领域中,密码学看似不重要,但却是非常关键的一环,就像学习TCP/IP、操作系统等知识一样,都是一个搭建基础的过程,掌握好密码学和TLS/SSL,未来再转入其他领域,就会更加得心应手,比如现在流行的区块链技术,其背后就包括密码学知识。
在这个过程中,我自己的学习方法论也得到了提升,对于HTTPS知识来说,RFC和OpenSSL官方文档可能是最权威、最专业的渠道,但这些文档有个通病,描述非常枯燥,需要静下心来仔细钻研,才能够掌握知识的精髓,而一旦打通这个环节,得到的收益将是巨大的。
写完《深入浅出 HTTPS:从原理到实战》后,我意识到《深入浅出 HTTPS:从原理到实战》绝对不是自己HTTPS学习的终点,因为HTTPS体系越来越重要,也涌现了很多相关的技术。比如,TLSv1.3越来越成熟,可《深入浅出 HTTPS:从原理到实战》并没有涉及相关的知识点;再比如,在编写《深入浅出 HTTPS:从原理到实战》的时候谷歌宣布废弃HPKP技术,可见整个HTTPS技术体系还在不断完善,我还会继续深入研究,也会以《深入浅出 HTTPS:从原理到实战》为基点,通过博客的形式分享给对HTTPS感兴趣的人。
最后,必须说明一点,我对于HTTPS的理解还有非常大的提升空间,未来我会继续在这一领域深耕。但《深入浅出 HTTPS:从原理到实战》是我的用心之作,希望读者能够以宽容、理解、帮助的心态对待它和我。
为什么选择《深入浅出 HTTPS:从原理到实战》
首先回答为什么要掌握HTTPS,确切地说,是回答我们为什么要掌握TLS/SSL。
互联网安全是非常重要的一个领域,而安全背后的核心就是密码学算法。TLS/SSL组合了大部分密码学算法,掌握了TLS/SSL,在一定程度上等同于理解了密码学。
TLS/SSL是TCP/IP协议族中独立的一个分层协议,重要性不言而喻,能够解决互联网中所有普适性的安全问题。只要提到安全,我们的第一反应就是思考能否引入TLS/SSL,是否能通过专门的密码学算法解决,掌握了密码学知识和TLS/SSL知识,在分析或者开发的时候会非常轻松。
总结一点,只要你是一个开发者,密码学和TLS/SSL必须掌握。
然后再回答为什么选择《深入浅出 HTTPS:从原理到实战》。
(1)《深入浅出 HTTPS:从原理到实战》是国内鲜有的HTTPS原创书籍,也是我的用心之作,就像工作一样,态度有的时候比技能更重要,在写《深入浅出 HTTPS:从原理到实战》的时候,我倾注了很多精力,借鉴了很多资料,对自己所有的观点都通过实例进行了论证,最后以自己的方式将知识分享给读者。
(2)我在Web领域做开发工作十余年,深刻明白Web技术体系的精髓,也明白什么知识才是核心和重要的,通过《深入浅出 HTTPS:从原理到实战》,我将自己的方法论分享给读者。《深入浅出 HTTPS:从原理到实战》不仅描述知识,更希望成为一扇大门,读者在阅读的时候应该思考我为什么如此讲解,希望读者完成阅读后能够自己进一步学习HTTPS知识。
(3)《深入浅出 HTTPS:从原理到实战》尽量描述一些真正实用的知识,比如:不会描述类似TLSv1.1版本的知识,因为它已经过时了;对于读者来说,可能更想对HTTPS网站进行调优,《深入浅出 HTTPS:从原理到实战》参考了很多最佳实践,提出了很多中肯的建议;很多人在部署HTTPS网站的时候,可能需要免费证书,为此我花费很长时间研究Le’sEncrypt和Certbot,相信阅读《深入浅出 HTTPS:从原理到实战》后,证书申请不再是难题。
(4)《深入浅出 HTTPS:从原理到实战》的知识很前沿,很少有书籍和资料基于TLSRFC文档详细讲解,《深入浅出 HTTPS:从原理到实战》用很多篇幅从FRC的角度进行讲解,最后还采用Wireshark工具对协议进行了解剖,让读者直观地了解协议如何握手及交互。
(5)《深入浅出 HTTPS:从原理到实战》充分考虑读者的实际情况,掌握TLS/SSL协议必须了解基础的密码学知识,否则学习的时候会非常煎熬。针对这种情况,《深入浅出 HTTPS:从原理到实战》从应用的角度而非原理的角度讲解密码学知识,为了避免枯燥,使用OpenSSL命令行工具讲解算法应用,《深入浅出 HTTPS:从原理到实战》处处可见OpenSSL命令行工具,非常具有实践性。
(6)在写作的时候,我尽量使用最精确的语言,很注意书写的流畅性,避免干扰读者的理解,可以说我是《深入浅出 HTTPS:从原理到实战》的第一阅读者,每时每刻都从读者的角度去解读。
总之,《深入浅出 HTTPS:从原理到实战》充分考虑了读者的需求,将真正有用的知识分享给读者,这也是《深入浅出 HTTPS:从原理到实战》最重要的价值。如果读者想系统地学习HTTPS知识,那么阅读《深入浅出 HTTPS:从原理到实战》是最好的方式,而选择《深入浅出 HTTPS:从原理到实战》并不会存在语言鸿沟,《深入浅出 HTTPS:从原理到实战》是一扇通往HTTPS较好的大门。
什么人适合阅读《深入浅出 HTTPS:从原理到实战》
那么什么人适合阅读《深入浅出 HTTPS:从原理到实战》呢?只要你是一个开发者,曾经进行过Web开发(最好了解PHP开发,因为《深入浅出 HTTPS:从原理到实战》使用了一些PHP示例),同时具备一定的Linux操作知识(比如了解Shell,了解Nginx服务器安装),那么阅读《深入浅出 HTTPS:从原理到实战》不会存在任何障碍。
阅读《深入浅出 HTTPS:从原理到实战》的人群主要如下:
√Web开发者,包括前、后端开发人员。
√网站运维人员。
√Web系统架构师。
√任何想了解密码学、OpenSSL、HTTPS知识的人。
√安全领域的开发者。
《深入浅出 HTTPS:从原理到实战》组织结构
结构性是一《深入浅出 HTTPS:从原理到实战》的精髓,我在挑选书籍的时候,第一步就是了解目录结构,从中可以看出作者的思路及书的特点,从而判断这《深入浅出 HTTPS:从原理到实战》是否适合自己阅读。所以在编写《深入浅出 HTTPS:从原理到实战》的时候,我对书的目录结构做了精心的设计,前后调整了好几次,充分考虑了读者的阅读习惯。
《深入浅出 HTTPS:从原理到实战》的每一章相对来说是独立的,读者可以跳跃式阅读,同时每章之间又是有关联的,每一章都有承上启下的作用,使用由浅入深的方式讲解。如果想系统地学习HTTPS,建议按照《深入浅出 HTTPS:从原理到实战》的目录结构从前往后阅读,这样就能全面掌握知识的脉络。
《深入浅出 HTTPS:从原理到实战》共10章,每章的大概内容如下。
第1章HTTPS主要解决HTTP的安全问题,所以本章首先回顾了HTTP的基础知识,以及不安全的根本原因。同时,HTTP是TCP/IP协议族中最重要的应用层协议,必须了解TCP/IP的基本原理和框架。最后必须明白Web安全和HTTPS安全是两个完全不同的领域。
第2章HTTPS背后的核心其实是密码学算法,所以本章介绍了很多常用的密码学算法,对算法的关键概念进行了讲解,同时为了避免学习枯燥,以OpenSSL工具和PHP语言讲解密码学算法。密码学算法非常关键,读者阅读《深入浅出 HTTPS:从原理到实战》后,建议找专业的密码学书籍进行学习。
第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’sEncrypt是一个免费的CA机构,可以申请免费证书,所以本章重点讲解了Let’sEncrypt的工作原理,以及全面讲解Certbot客户端的使用。本章可以结合第6章一起阅读,全面掌握证书的内容。同时证书和TLS/SSL不是孤立存在的,其背后的密码学原理是相通的。
第8章本章是《深入浅出 HTTPS:从原理到实战》的核心,根据RFC文档详细讲解了TLS/SSL细节,主要包括握手协议、协议扩展、会话恢复等。而为了更直观地掌握协议原理,本章使用Wireshark网络工具解剖了协议消息,使读者可以从多个角度掌握协议。
第9章《深入浅出 HTTPS:从原理到实战》最后两章主要讲解HTTPS最佳实践策略,本章讲解读者最关心的两个问题,分别是如何提升HTTPS网站性能,以及如何部署更安全的HTTPS网站。不管是协议性能还是安全性,密码套件是其中最关键的概念,所以本章花了很多篇幅介绍密码套件的概念和特点。
第10章本章是最佳实践的后半部分,介绍了很多工具和网站,实践性非常强。首先介绍了Cloudflare和Mozilla推荐的两个工具,通过这两个工具,能够搭建出非常棒的HTTPS网站。其次讲解HTTPS网站测试工具,首推SSLLabs工具包,建议读者重点关注该网站。再次系统介绍了OpenSSL命令行工具,学习TLS/SSL最好的工具其实就是OpenSSL,很多HTTPS工具都是对OpenSSL命令行的进一步封装。接着介绍了如何在Nginx服务器上配置HTTPS网站,详细介绍了ngx_http_ssl_module模块的各个指令。最后描述了大型网站如何有效地进行部署、优化。
示例
《深入浅出 HTTPS:从原理到实战》用到了很多示例,主要包含PHP代码片段、Nginx服务器配置、OpenSSL命令行、Wiresharkpcap文件。所有的示例都存放在GitHub上(https://github.com/ywdblog/httpsbook),每章一个目录,读者很容易根据书中的描述找到示例。
如果出现示例代码运行错误,可能有以下几个原因:
√对于PHP脚本来说,依赖性比较小,所有代码都运行在PHP5.3.3(cli)版本下,如果不能成功运行,可能是读者的PHP版本过高。
√关于Nginx配置,《深入浅出 HTTPS:从原理到实战》第10章描述了相关配置,在Nginx1.13.5版本下测试通过,读者在测试的时候请注意Nginx版本。
√TLS/SSL和OpenSSL库在不断升级,读者在运行OpenSSL命令行示例的时候,需要注意版本,示例只是一个参考,遇到问题,建议重点参考OpenSSL的官方手册。
示例只是为了协助学习,对于读者来说,更重要的是掌握书中描述的知识,然后不断地实践,从而真正灵活使用。
反馈
由于水平有限,书中难免出现理解错误和书写错误,如果读者在阅读过程中发现任何错误,都可以去https://github.com/ywdblog/httpsbook提交Issue。同时,如果有好的建议或者问题,也可以直接提交Issue或者发送邮件至ywblog@outlook.com,我会及时并尽力去答复。
《深入浅出 HTTPS:从原理到实战》所有勘误修正全部放在https://book.simplehttps.com/errata.md文件中,欢迎大家尽量指出书中的错误,这是对我最大的支持。
写完《深入浅出 HTTPS:从原理到实战》后,考虑到HTTPS的中文资料非常少,也不成体系,所以我专门申请了一个域名(simplehttps.com),希望构建一个良好的知识学习平台,具体的运作形式还没想好,欢迎大家给我一些建议。初步的设想就是汇众一些博客文章和资料,作为学习HTTPS知识的入口。
致谢
感谢廼悦,从整体结构上给《深入浅出 HTTPS:从原理到实战》提供了很多建设性的意见,非常感谢他为《深入浅出 HTTPS:从原理到实战》作序,他是我最尊敬的技术领导。同时也感谢公司的技术大牛卫华为《深入浅出 HTTPS:从原理到实战》作序,以及其他四位专家的宝贵推荐。感谢博文视点的董英编辑和她的同事们,让我认识到编辑工作的专业性,以及一丝不苟的态度。感谢老婆的默默付出,让我有足够的时间和精力去写这《深入浅出 HTTPS:从原理到实战》,感谢闺女带来家庭快乐,希望老婆健健康康、开心生活,闺女健康成长。









