猜你喜欢
深入浅出 HTTPS:从原理到实战

深入浅出 HTTPS:从原理到实战

书籍作者:虞卫东 ISBN:9787121341786
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5648
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《深入浅出 HTTPS:从原理到实战》是一本专业的HTTPS书籍,全面讲解了HTTPS领域的相关知识,内容包括密码学、OpenSSL命令行、证书、TLS协议、HTTPS网站性能优化、HTTPS网站优秀实践、大型网站HTTPS架构设计等。《深入浅出 HTTPS:从原理到实战》有几个特点:(1)内容全面而新颖,基于RFC文档、国外书籍、社区等一手资料,总结了大部分新的HTTPS知识;(2)由浅入深,从基础到进阶全面掌握HTTPS,读者能够轻松构建一个HTTPS网站,并使网站安全性和性能大化,对于大型网站的HTTPS系统架构和应用架构设计也有指导意义;(3)内容通俗易懂,用语描述精准,充分考虑到读者的阅读和思考习惯,只要具备基础的HTTPS知识和Linux知识就能无障碍阅读;(4)理论结合实践,本书除了让读者掌握HTTPS的交互细节,更注重实践,介绍了很多工具,让读者更好地掌握HTTPS;(5)具有启发性,读者可以通过《深入浅出 HTTPS:从原理到实战》开启密码学和HTTPS学习之门,真正做到“深入”。

HTTPS(TLS协议)重点在于密码学,互联网安全是首位的,所以任何技术领域(比如目前火爆的区块链)都需要密码学和HTTPS(TLS协议)知识,架构人员、开发人员、运维人员都适合阅读《深入浅出 HTTPS:从原理到实战》。

作者简介

虞卫东,网名虞大胆,新浪网高级技术经理。曾先后供职过新浪博客产品部和赶集网移动事业部。在新浪博客工作多年,担任过开发工程师、技术经理、应用架构师等,负责新浪博客的开发、运维、设计、性能优化等工作。在赶集网担任过技术总监,负责赶集网客户端后端开发工作。十余年来一直致力于Web后端开发,积累了丰富的架构设计、开发、运维经验,擅长PHP、Python等开发语言。

编辑推荐

★国内鲜有的专业HTTPS书籍,HTTPS实践指南

★集理论与实践于一体,由浅入深、通俗易懂

★以TLS 1.2协议为主,描述前沿的知识和工具

★全方位深刻解剖Web安全相关体系结构的知识

★作者有十多年一线实践经验,深刻理解Web精髓

★本书不仅是HTTPS专著,更是经验和方法论分享

★书中含大量实例,极具实践性,读者更好理解

★如果你想了解Web安全、部署HTTPS网站、

部署HTTP/2网站、优化网站性能,

那么本书是你的一个极好的选择。


前言


我的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模块的各个指令。最后描述了大型网站如何有效地进行部署、优化。


示例

本书用到了很多示例,主要包含PHP代码片段、Nginx服务器配置、OpenSSL命令行、Wireshark pcap文件。所有的示例都存放在GitHub上(https://github.com/ywdblog/httpsbook),每章一个目录,读者很容易根据书中的描述找到示例。

如果出现示例代码运行错误,可能有以下几个原因:

√ 对于PHP脚本来说,依赖性比较小,所有代码都运行在PHP 5.3.3 (cli)版本下,如果不能成功运行,可能是读者的PHP版本过高。

√ 关于Nginx配置,本书第10章描述了相关配置,在Nginx 1.13.5版本下测试通过,读者在测试的时候请注意Nginx版本。

√ TLS/SSL和OpenSSL库在不断升级,读者在运行OpenSSL命令行示例的时候,需要注意版本,示例只是一个参考,遇到问题,建议重点参考OpenSSL的官方手册。

示例只是为了协助学习,对于读者来说,更重要的是掌握书中描述的知识,然后不断地实践,从而真正灵活使用。


反馈

由于水平有限,书中难免出现理解错误和书写错误,如果读者在阅读过程中发现任何错误,都可以去https://github.com/ywdblog/httpsbook提交Issue。同时,如果有好的建议或者问题,也可以直接提交Issue或者发送邮件至[email protected],我会及时并尽力去答复。

本书所有勘误修正全部放在https://book.simplehttps.com/errata.md文件中,欢迎大家尽量指出书中的错误,这是对我最大的支持。

写完本书后,考虑到HTTPS的中文资料非常少,也不成体系,所以我专门申请了一个域名(simplehttps.com),希望构建一个良好的知识学习平台,具体的运作形式还没想好,欢迎大家给我一些建议。初步的设想就是汇众一些博客文章和资料,作为学习HTTPS知识的入口。


致谢

感谢廼悦,从整体结构上给本书提供了很多建设性的意见,非常感谢他为本书作序,他是我最尊敬的技术领导。同时也感谢公司的技术大牛卫华为本书作序,以及其他四位专家的宝贵推荐。感谢博文视点的董英编辑和她的同事们,让我认识到编辑工作的专业性,以及一丝不苟的态度。感谢老婆的默默付出,让我有足够的时间和精力去写这本书,感谢闺女带来家庭快乐,希望老婆健健康康、开心生活,闺女健康成长。

目录

第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.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.5 TLS/SSL握手协议 288

8.6 扩展 306

8.7 基于Session ID的会话恢复 316

8.8 SessionTicket 319

8.9 使用Wireshark学习TLS/SSL协议 325


第9章 HTTPS性能和安全 347

9.1 密码套件 347

9.2 安全性 364

9.3 性能 385


第10章 HTTPS网站实战 414

10.1 工具化配置HTTPS 414

10.2 自动化测试HTTPS网站 426

10.3 OpenSSL命令行工具 439

10.4 实战HTTPS网站部署 454

10.5 大型网站部署HTTPS 471


标签
https
产品特色