HTTPS 权威指南:在服务器和 Web 应用上部署 SSL / TLS 和 PKI

发布于 2023-06-28 21:39:02 字数 9517 浏览 57 评论 0

本书是集理论、协议细节、漏洞分析、部署建议于一体的详尽 Web 应用安全指南。书中具体内容包括 :密码学基础,TLS 协议,PKI 体系及其安全性,HTTP 和浏览器问题,协议漏洞 ;最新的攻击形式,如 BEAST、CRIME、BREACH、Lucky 13 等 ;详尽的部署建议 ;如何使用 OpenSSL 生成密钥和确认信息 ;如何使用 Apache httpd、IIS、Nginx 等进行安全配置。

本书适合 Web 开发人员、系统管理员和所有对 Web 应用安全感兴趣的读者。

尽管我从 SSL 诞生之初就开始使用它,但直到 2004 年开始撰写第一本书 Apache Security 时,才对它产生了浓厚的兴趣。在五年之后的 2009 年,我决定寻找一些新的事情去做,于是决定在 SSL 上投入更多时间。自此我便专注于此,随后写成了本书。

我重新关注 SSL 的主要原因是我认为可以改善它:这一项重要的技术由于工具和文档的缺乏而受到阻碍。密码学这门学科非常吸引人,对这个领域了解得越多,实际上就越不了解它。换言之,了解得越多,就会发现有更多仍不了解的部分。当我对某个复杂命题的理解达到新的境界以后,另一层复杂性就随之展现在我面前。这种情况我已经数不清遇到过多少次,而这也正是密码学的迷人之处。

我花了近两年时间撰写本书。起初我认为只要花一部分精力就可以了,并没有全身心投入,但是不行。有一天我突然意识到,这个领域的变化实在太快,原本“已经完成”的章节到后来不得不返工甚至重写。到了最后,大约六个月以前,为了跟上变化,我开始抓紧每一刻闲暇撰写本书。

目录
第 1 章 SSL、TLS 和密码学
1.1 传输层安全
1.2 网络层
1.3 协议历史
1.4 密码学
1.4.1 构建基块
1.4.2 协议
1.4.3 攻击密码
1.4.4 衡量强度
1.4.5 中间人攻击
第 2 章 协议
2.1 记录协议
2.2 握手协议
2.2.1 完整的握手
2.2.2 客户端身份验证
2.2.3 会话恢复
2.3 密钥交换
2.3.1 RSA 密钥交换
2.3.2 Diffie-Hellman 密钥交换
2.3.3 椭圆曲线 Diffie-Hellman 密钥交换
2.4 身份验证
2.5 加密
2.5.1 序列加密
2.5.2 分组加密
2.5.3 已验证的加密
2.6 重新协商
2.7 应用数据协议
2.8 警报协议
2.9 关闭连接
2.10 密码操作
2.10.1 伪随机函数
2.10.2 主密钥
2.10.3 密钥生成
2.11 密码套件
2.12 扩展
2.12.1 应用层协议协商
2.12.2 证书透明度
2.12.3 椭圆曲线功能
2.12.4 心跳
2.12.5 次协议协商
2.12.6 安全重新协商
2.12.7 服务器名称指示
2.12.8 会话票证
2.12.9 签名算法
2.12.10 OCSP stapling
2.13 协议限制
2.14 协议版本间的差异
2.14.1 SSL 3
2.14.2 TLS 1.0
2.14.3 TLS 1.1
2.14.4 TLS 1.2
第 3 章 公钥基础设施
3.1 互联网公钥基础设施
3.2 标准
3.3 证书
3.3.1 证书字段
3.3.2 证书扩展
3.4 证书链
3.5 信赖方
3.6 证书颁发机构
3.7 证书生命周期
3.8 吊销
3.9 弱点
3.10 根密钥泄露
3.11 生态系统评估
3.12 进步
第 4 章 攻击 PKI
4.1 VeriSign 签发的 Microsoft 代码签名证书
4.2 Thawte 签发的 login.live.com
4.3 StartCom 违规(2008)
4.4 CertStar(Comodo)签发的 Mozilla 证书
4.5 伪造的 RapidSSL CA 证书
4.5.1 前缀选择碰撞攻击
4.5.2 创建碰撞证书
4.5.3 预测前缀
4.5.4 接下来发生的事
4.6 Comodo 代理商违规
4.7 StartCom 违规(2011)
4.8 DigiNotar
4.8.1 公众的发现
4.8.2 一个证书颁发机构的倒下
4.8.3 中间人攻击
4.8.4 ComodoHacker 宣布负责
4.9 DigiCert Sdn. Bhd.
4.10 火焰病毒
4.10.1 火焰病毒对抗 Windows 更新
4.10.2 火焰病毒对抗 Windows 终端服务
4.10.3 火焰病毒对抗 MD5
4.11 TURKTRUST
4.12 ANSSI
4.13 印度国家信息中心
4.14 广泛存在的 SSL 窃听
4.14.1 Gogo
4.14.2 Superfish 和它的朋友们
4.15 CNNIC
第 5 章 HTTP 和浏览器问题
5.1 sidejacking
5.2 Cookie 窃取
5.3 Cookie 篡改
5.3.1 了解 HTTP Cookie
5.3.2 Cookie 篡改攻击
5.3.3 影响
5.3.4 缓解方法
5.4 SSL 剥离
5.5 中间人攻击证书
5.6 证书警告
5.6.1 为什么有这么多无效证书
5.6.2 证书警告的效果
5.6.3 点击—通过式警告与例外
5.6.4 缓解方法
5.7 安全指示标志
5.8 混合内容
5.8.1 根本原因
5.8.2 影响
5.8.3 浏览器处理
5.8.4 混合内容的流行程度
5.8.5 缓解方法
5.9 扩展验证证书
5.10 证书吊销
5.10.1 客户端支持不足
5.10.2 吊销检查标准的主要问题
5.10.3 证书吊销列表
5.10.4 在线证书状态协议
第 6 章 实现问题
6.1 证书校验缺陷
6.1.1 在库和平台中的证书校验缺陷
6.1.2 应用程序校验缺陷
6.1.3 主机名校验问题
6.2 随机数生成
6.2.1 Netscape Navigator 浏览器(1994)
6.2.2 Debian(2006)
6.2.3 嵌入式设备熵不足问题
6.3 心脏出血
6.3.1 影响
6.3.2 缓解方法
6.4 FREAK
6.4.1 出口密码
6.4.2 攻击
6.4.3 影响和缓解方法
6.5 Logjam
6.5.1 针对不安全 DHE 密钥交换的主动攻击
6.5.2 针对不安全 DHE 密钥交换的预先计算攻击
6.5.3 针对弱 DH 密钥交换的状态—水平威胁
6.5.4 影响
6.5.5 缓解方法
6.6 协议降级攻击
6.6.1 SSL 3 中的回退保护
6.6.2 互操作性问题
6.6.3 自愿协议降级
6.6.4 TLS 1.0 和之后协议的回退保护
6.6.5 攻击自愿协议降级
6.6.6 现代回退防御
6.7 截断攻击
6.7.1 截断攻击的历史
6.7.2 Cookie 截断
6.8 部署上的弱点
6.8.1 虚拟主机混淆
6.8.2 TLS 会话缓存共享
第 7 章 协议攻击
7.1 不安全重新协商
7.1.1 为什么重新协商是不安全的
7.1.2 触发弱点
7.1.3 针对 HTTP 协议的攻击
7.1.4 针对其他协议的攻击
7.1.5 由架构引入的不安全重新协商问题
7.1.6 影响
7.1.7 缓解方法
7.1.8 漏洞发现和补救时间表
7.2 BEAST
7.2.1 BEAST 的原理
7.2.2 客户端缓解方法
7.2.3 服务器端缓解方法
7.2.4 历史
7.2.5 影响
7.3 压缩旁路攻击
7.3.1 压缩预示如何生效
7.3.2 攻击的历史
7.3.3 CRIME
7.3.4 针对 TLS 和 SPDY 攻击的缓解方法
7.3.5 针对 HTTP 压缩攻击的缓解方法
7.4 Lucky 13
7.4.1 什么是填充预示
7.4.2 针对 TLS 的攻击
7.4.3 影响
7.4.4 缓解方法
7.5 RC4 缺陷
7.5.1 密钥调度弱点
7.5.2 单字节偏差
7.5.3 前 256 字节偏差
7.5.4 双字节偏差
7.5.5 针对密码进行攻击的改进
7.5.6 缓解方法:RC4 与 BEAST、Lucky 13 和 POODLE 的比较
7.6 三次握手攻击
7.6.1 攻击
7.6.2 影响
7.6.3 先决条件
7.6.4 缓解方法
7.7 POODLE
7.7.1 实际攻击
7.7.2 影响
7.7.3 缓解方法
7.8 Bullrun
双椭圆曲线确定性随机位生成器
第 8 章 部署
8.1 密钥
8.1.1 密钥算法
8.1.2 密钥长度
8.1.3 密钥管理
8.2 证书
8.2.1 证书类型
8.2.2 证书主机名
8.2.3 证书共享
8.2.4 签名算法
8.2.5 证书链
8.2.6 证书吊销
8.2.7 选择合适的 CA
8.3 协议配置
8.4 密码套件配置
8.4.1 服务器密码套件配置优先
8.4.2 加密强度
8.4.3 前向保密
8.4.4 性能
8.4.5 互操作性
8.5 服务器配置和架构
8.5.1 共享环境
8.5.2 虚拟安全托管
8.5.3 会话缓存
8.5.4 复杂体系结构
8.6 问题缓解方法
8.6.1 重新协商
8.6.2 BEAST(HTTP)
8.6.3 CRIME(HTTP)
8.6.4 Lucky 13
8.6.5 RC4
8.6.6 TIME 和 BREACH(HTTP)
8.6.7 三次握手攻击
8.6.8 心脏出血
8.7 钉扎
8.8 HTTP
8.8.1 充分利用加密
8.8.2 Cookie 安全
8.8.3 后端证书和域名验证
8.8.4 HTTP 严格传输安全
8.8.5 内容安全策略
8.8.6 协议降级保护
第 9 章 性能优化
9.1 延迟和连接管理
9.1.1 TCP 优化
9.1.2 长连接
9.1.3 SPDY、HTTP 2.0 以及其他
9.1.4 内容分发网络
9.2 TLS 协议优化
9.2.1 密钥交换
9.2.2 证书
9.2.3 吊销检查
9.2.4 会话恢复
9.2.5 传输开销
9.2.6 对称加密
9.2.7 TLS 记录缓存延迟
9.2.8 互操作性
9.2.9 硬件加速
9.3 拒绝服务攻击
9.3.1 密钥交换和加密 CPU 开销
9.3.2 客户端发起的重新协商
9.3.3 优化过的 TLS 拒绝服务攻击
第 10 章 HTTP 严格传输安全、内容安全策略和钉扎
10.1 HTTP 严格传输安全
10.1.1 配置 HSTS
10.1.2 确保主机名覆盖
10.1.3 Cookie 安全
10.1.4 攻击向量
10.1.5 浏览器支持
10.1.6 强大的部署清单
10.1.7 隐私问题
10.2 内容安全策略
10.2.1 防止混合内容问题
10.2.2 策略测试
10.2.3 报告
10.2.4 浏览器支持
10.3 钉扎
10.3.1 钉扎的对象
10.3.2 在哪里钉扎
10.3.3 应该使用钉扎吗
10.3.4 在本机应用程序中使用钉扎
10.3.5 Chrome 公钥钉扎
10.3.6 Microsoft Enhanced Mitigation Experience Toolkit
10.3.7 HTTP 公钥钉扎扩展
10.3.8 DANE
10.3.9 证书密钥可信保证
10.3.10 证书颁发机构授权
第 11 章 OpenSSL
11.1 入门
11.1.1 确定 OpenSSL 版本和配置
11.1.2 构建 OpenSSL
11.1.3 查看可用命令
11.1.4 创建可信证书库
11.2 密钥和证书管理
11.2.1 生成密钥
11.2.2 创建证书签名申请
11.2.3 用当前证书生成 CSR 文件
11.2.4 非交互方式生成 CSR
11.2.5 自签名证书
11.2.6 创建对多个主机名有效的证书
11.2.7 检查证书
11.2.8 密钥和证书格式转换
11.3 配置
11.3.1 选择密码套件
11.3.2 性能
11.4 创建私有证书颁发机构
11.4.1 功能和限制
11.4.2 创建根 CA
11.4.3 创建二级 CA
第 12 章 使用 OpenSSL 进行测试
12.1 连接 SSL 服务
12.2 测试升级到 SSL 的协议
12.3 使用不同的握手格式
12.4 提取远程证书
12.5 测试支持的协议
12.6 测试支持的密码套件
12.7 测试要求包含 SNI 的服务器
12.8 测试会话复用
12.9 检查 OCSP 吊销状态
12.10 测试 OCSP stapling
12.11 检查 CRL 吊销状态
12.12 测试重新协商
12.13 测试 BEAST 漏洞
12.14 测试心脏出血
12.15 确定 Diffie-Hellman 参数的强度
第 13 章 配置 Apache
13.1 安装静态编译 OpenSSL 的 Apache
13.2 启用 TLS
13.3 配置 TLS 协议
13.4 配置密钥和证书
13.5 配置多个密钥
13.6 通配符和多站点证书
13.7 虚拟安全托管
13.8 为错误消息保留默认站点
13.9 前向保密
13.10 OCSP stapling
13.10.1 配置 OCSP stapling
13.10.2 处理错误
13.10.3 使用自定义 OCSP 响应程序
13.11 配置临时的 DH 密钥交换
13.12 TLS 会话管理
13.12.1 独立会话缓存
13.12.2 独立会话票证
13.12.3 分布式会话缓存
13.12.4 分布式会话票证
13.12.5 禁用会话票证
13.13 客户端身份验证
13.14 缓解协议问题
13.14.1 不安全的重新协商
13.14.2 BEAST
13.14.3 CRIME
13.15 部署 HTTP 严格传输安全
13.16 监视会话缓存状态
13.17 记录协商的 TLS 参数
13.18 使用 mod_sslhaf 的高级日志记录
第 14 章 配置 Java 和 Tomcat
14.1 Java 加密组件
14.1.1 无限制的强加密
14.1.2 Provider 配置
14.1.3 功能概述
14.1.4 协议漏洞
14.1.5 互操作性问题
14.1.6 属性配置调优
14.1.7 常见错误消息
14.1.8 保护 Java Web 应用
14.1.9 常见密钥库操作
14.2 Tomcat
14.2.1 TLS 配置
14.2.2 JSSE 配置
14.2.3 APR 和 OpenSSL 配置
第 15 章 配置 Microsoft Windows 和 IIS
15.1 Schannel
15.1.1 功能概述
15.1.2 协议漏洞
15.1.3 互操作性问题
15.2 Microsoft 根证书计划
15.2.1 管理系统可信证书库
15.2.2 导入可信证书
15.2.3 可信证书黑名单
15.2.4 禁用根证书自动更新
15.3 配置
15.3.1 Schannel 配置
15.3.2 密码套件配置
15.3.3 密钥和签名限制
15.3.4 重新协商配置
15.3.5 配置会话缓存
15.3.6 监控会话缓存
15.3.7 FIPS 140-2
15.3.8 第三方工具
15.4 保护 ASP.NET 网站应用的安全
15.4.1 强制使用 SSL
15.4.2 Cookie 的保护
15.4.3 保护会话 Cookie 和 Forms 身份验证的安全
15.4.4 部署 HTTP 严格传输安全
15.5 Internet 信息服务
密钥和证书的管理
第 16 章 配置 Nginx
16.1 以静态链接 OpenSSL 方式安装 Nginx
16.2 启用 TLS
16.3 配置 TLS 协议
16.4 配置密钥和证书
16.5 配置多密钥
16.6 通配符证书和多站点证书
16.7 虚拟安全托管
16.8 默认站点返回错误消息
16.9 前向保密
16.10 OCSP stapling
16.10.1 配置 OCSP stapling
16.10.2 自定义 OCSP 响应
16.10.3 手动配置 OCSP 响应
16.11 配置临时 DH 密钥交换
16.12 配置临时 ECDH 密钥交换
16.13 TLS 会话管理
16.13.1 独立会话缓存
16.13.2 独立会话票证
16.13.3 分布式会话缓存
16.13.4 分布式会话票证
16.13.5 禁用会话票证
16.14 客户端身份验证
16.15 缓解协议问题
16.15.1 不安全的重新协商
16.15.2 BEAST
16.15.3 CRIME
16.16 部署 HTTP 严格传输安全
16.17 TLS 缓冲区调优
16.18 日志记录
第 17 章 总结

下载地址:https://www.wenjiangs.com/wp-content/uploads/2023/06/5qsr8wO4aGbpqkN7.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

qq_7J1imQ

文章 0 评论 0

《一串符号》

文章 0 评论 0

hls.

文章 0 评论 0

雅心素梦

文章 0 评论 0

塔塔猫

文章 0 评论 0

微信用户

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文