本书组织结构
结构性是一本书的精髓,我在挑选书籍的时候,第一步就是了解目录结构,从中可以看出作者的思路及书的特点,从而判断这本书是否适合自己阅读。所以在编写本书的时候,我对书的目录结构做了精心的设计,前后调整了好几次,充分考虑了读者的阅读习惯。
本书的每一章相对来说是独立的,读者可以跳跃式阅读,同时每章之间又是有关联的,每一章都有承上启下的作用,使用由浅入深的方式讲解。如果想系统地学习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模块的各个指令。最后描述了大型网站如何有效地进行部署、优化。