HTTPS 權威指南:在服務器和 Web 應用上部署 SSL/TLS 和 PKI
內容描述
萬·裡斯蒂奇著楊洋、李振宇、蔣鍔、周輝、陳傳文譯的《HTTPS權威指南(在服務器和Web應用上部署SSL\TLS和PKI)/圖靈程序設計叢書》是集理論、協議細節、漏洞分析、部署建議於一體的詳盡Web應用安全指南。書中具體內容包括:密碼學基礎,TLS協議,PKI體系及其安全性,HTTP和瀏覽器問題,協議漏洞:最新的攻擊形式,如BEAST、CRIME、BREACH、Lucky 13等;詳盡的部署建議;如何使用OpenSSL生成密鑰和確認信息;如何使用Apache httpd、IIS、Nginx等進行安全配置。
本書適合Web開發人員、系統管理員和所有對Web應用安全感興趣的讀者。
目錄大綱
第1章SSL、TLS和密碼學1
1.1傳輸層安全1
1.2網絡層2
1.3協議歷史3
1.4密碼學4
1.4.1構建基塊4
1.4.2協議12
1.4.3攻擊密碼13
1.4.4衡量強度13
1.4.5中間人攻擊15
第2章協議19
2.1記錄協議19
2.2握手協議21
2.2.1完整的握手21
2.2.2客戶端身份驗證26
2.2.3會話恢復28
2.3密鑰交換29
2.3.1 RSA密鑰交換30
2.3.2 Diffie-Hellman密鑰交換31
2.3.3橢圓曲線Diffie-Hellman密鑰交換33
2.4身份驗證34
2.5加密34
2.5.1序列加密34
2.5.2分組加密35
2.5.3已驗證的加密36
2.6重新協商37
2.7應用數據協議38
2.8警報協議38
2.9關閉連接39
2.10密碼操作39
2.10.1偽隨機函數39
2.10.2主密鑰40
2.10.3密鑰生成40
2.11密碼套件41
2.12擴展42
2.12.1應用層協議協商43
2.12.2證書透明度44
2.12.3橢圓曲線功能44
2.12.4心跳45
2.12.5次協議協商46
2.12.6安全重新協商47
2.12.7服務器名稱指示47
2.12 .8會話票證48
2.12.9簽名算法48
2.12.10 OCSP sta pling 49
2.13協議限制49
2.14協議版本間的差異50
2.14.1 SSL 3 50
2.14.2 TLS 1.0 50
2.14.3 TLS 1.1 50
2.14.4 TLS 1.2 51
第3章公鑰基礎設施52
3.1互聯網公鑰基礎設施52
3.2標準54
3.3證書55
3.3.1證書字段55
3.3.2證書擴展57
3.4證書鏈58
3.5信賴方60
3.6證書頒發機構61
3.7證書生命週期62
3.8吊銷63
3.9弱點63
3.10根密鑰洩露65
3.11生態系統評估66
3.12進步68
第4章攻擊PKI 71
4.1 VeriSign簽發的Microsoft代碼簽名證書71
4.2 Thawte簽發的login.live.com 72
4.3 StartCom違規(2008) 72
4.4 CertStar(Comodo)簽發的Mozilla證書73
4.5偽造的RapidSSL CA證書73
4.5.1前綴選擇碰撞攻擊75
4.5.2創建碰撞證書75
4.5.3預測前綴76
4.5.4接下來發生的事78
4.6 Comodo代理商違規78
4.7 StartCom違規(2011) 80
4.8 DigiNotar 80
4.8.1公眾的發現80
4.8.2一個證書頒發機構的倒下81
4.8.3中間人攻擊82
4.8.4 ComodoHacker宣布負責83
4.9 DigiCert Sdn. Bhd. 85
4.10火焰 病毒85
4.10.1火焰病毒對抗Windows更新86
4.10.2火焰病毒對抗Windows終端服務87
4.10.3火焰病毒對抗MD5 88
4.11 TURKTRUST 89
4.12 ANSSI 90
4.13印度國家信息中心91
4.14廣泛存在的SSL竊聽91
4.14. 1 Gogo 91
4.14.2 Superfish和它的朋友們92
4.15 CNNIC 93
第5章http和瀏覽器問題95
5.1 sidejacking 95
5.2 Cookie竊取97
5.3 Cookie篡改98
5.3.1了解http Cookie 98
5.3.2 Cookie篡改攻擊99
5.3.3影響102
5.3.4緩解方法103
5.4 SSL剝離103
5.5中間人攻擊證書104
5.6證書警告105
5.6.1為什麼有這麼多無效證書107
5.6.2證書警告的效果108
5.6.3點擊—通過式警告與例外109
5.6.4緩解方法110
5.7安全指示標誌110
5.8混合內容112
5.8.1根本原因112
5.8.2影響114
5.8.3瀏覽器處理114
5.8.4混合內容的流行程度116
5.8.5緩解方法117
5.9擴展驗證證書118
5.10證書吊銷119
5.10.1客戶端支持不足119
5.10.2吊銷檢查標準的主要問題119
5.10.3證書吊銷列表120
5.10 .4在線證書狀態協議122
第6章實現問題127
6.1證書校驗缺陷127
6.1.1在庫和平台中的證書校驗缺陷128
6.1.2應用程序校驗缺陷131
6.1.3主機名校驗問題132
6.2隨機數生成133
6.2.1 Netscape Navigator瀏覽器(1994) 133
6.2.2 Debian(2006) 134
6.2.3嵌入式設備熵不足問題135
6.3心臟出血137
6.3.1影響137
6.3.2緩解方法139
6.4 FREAK 139
6.4.1出口密碼140
6.4.2攻擊140
6.4.3影響和緩解方法143
6.5 Logjam 144
6.5.1針對不安全DHE密鑰交換的主動攻擊144
6.5.2針對不安全DHE密鑰交換的預先計算攻擊145
6.5.3針對弱DH密鑰交換的狀態—水平威脅146
6.5.4影響147
6.5.5緩解方法148
6.6協議降級攻擊148
6.6.1 SSL 3中的回退保護149
6.6.2互操作性問題149
6.6.3自願協議降級152
6.6.4 TLS 1.0和之後協議的回退保護153
6.6.5攻擊自願協議降級154
6.6.6現代回退防禦154
6.7截斷攻擊156
6.7.1截斷攻擊的歷史157
6.7.2 Cookie截斷157
6.8 署上的弱點159
6.8.1虛擬主機混淆159
6.8.2 TLS會話緩存共享160
第7章協議攻擊161
7.1不安全重新協商161
7.1.1為什麼重新協商是不安全的162
7.1.2觸發弱點162
7.1 .3針對http協議的攻擊163
7.1.4針對其他協議的攻擊166
7.1.5由架構引入的不安全重新協商問題167
7.1.6影響167
7.1.7緩解方法167
7.1.8漏洞發現和補救時間表168
7.2 BEAST 169
7.2.1 BEAST的原理170
7.2.2客戶端緩解方法173
7.2.3服務器端緩解方法175
7.2.4歷史176
7.2.5影響177
7.3壓縮旁路攻擊178
7.3.1壓縮預示如何生效178
7.3.2攻擊的歷史180
7.3.3 CRIME 181
7.3.4針對TLS和SPDY攻擊的緩解方法187
7.3.5針對http壓縮攻擊的緩解方法188
7.4 Lucky 13 189
7.4.1什麼是填充預示189
7.4. 2針對TLS的攻擊190
7.4.3影響191
7.4.4緩解方法191
7.5 RC4缺陷192
7.5.1密鑰調度弱點192
7.5.2單字節偏差193
7.5.3前256字節偏差194
7.5.4雙字節偏差196
7.5.5針對密碼進行攻 的改進196
7.5.6緩解方法:RC4與BEAST、Lucky 13和POODLE的比較197
7.6三次握手攻擊198
7.6.1攻擊198
7.6.2影響202
7.6.3先決條件203
7.6.4緩解方法203
7.7 POODLE 204
7.7.1實際攻擊207
7.7.2影響208
7.7.3緩解方法208
7.8 Bullrun 209
第8章部署212
8.1密鑰212
8.1.1密鑰算法212
8.1.2密鑰長度213
8.1.3密鑰管理213
8.2證書215
8.2.1證書類型215
8.2.2證書主機名215
8.2.3證書共享216
8.2.4簽名算法216
8.2.5證書鏈217
8.2.6證書吊銷218
8.2.7選擇合適的CA 218
8.3協議配置219
8.4密碼套件配置220
8.4.1服務器密碼套件配置優先220
8.4.2加密強度220
8.4.3前向保密221
8.4.4性能222
8.4.5互操作性222
8.5服務器配置和架構223
8.5.1共享環境223
8.5.2虛擬安全託管223
8.5.3會話緩存223
8.5.4複雜體系結構224
8.6問題緩解方法225
8.6.1重新協商225
8.6.2 BEAST(http) 225
8.6.3 CRIME(http) 225
8.6.4 Lucky 13 226
8.6.5 RC4 226
8.6.6 TIME和BREACH(http) 227
8.6.7三次握手攻擊227
8.6.8心臟出血228
8.7釘扎228
8.8 http 228
8.8.1充分利用加密228
8.8.2 Cookie安全229
8.8.3後端證書和域名驗證229
8.8.4 http嚴格傳輸安全229
8.8.5內容安全策略230
8.8.6協議降級保護230
第9章性能優化231
9.1延遲和連接管理232
9.1.1 TCP優化232
9.1.2長連接234
9.1.3 SPDY、http 2.0以及其他235
9.1.4內容分發網絡235
9.2 TLS協議優化237
9.2.1密鑰交換237
9.2.2證書240
9.2.3吊銷檢查242
9.2.4會話恢復243
9.2.5傳輸開銷243
9.2.6對稱加密244
9.2.7 TLS記錄緩存延遲246
9.2.8互操作性247
9.2.9硬件加速247
9.3拒絕服務攻擊248
9.3.1密鑰交換和加密CPU開銷249
9.3.2客戶端發起的重新協商250
9.3.3優化過的TLS拒絕服務攻擊250
第10章http嚴格傳輸安全、內容安全策略和釘扎251
10.1 http嚴格傳輸安全251
10.1.1配置HSTS 252
10.1.2確保主機名覆蓋253
10.1.3 Cookie安全253
10.1 .4攻擊向量254
10.1.5瀏覽 支持255
10.1.6強大的部署清單256
10.1.7隱私問題257
10.2內容安全策略257
10.2.1防止混合內容問題258
10.2.2策略測試259
10.2.3報告259
10.2.4瀏覽器支持259
10.3釘扎260
10.3.1釘扎的對象261
10.3.2在哪裡釘扎262
10.3.3應該使用釘扎嗎263
10.3.4在本機應用程序中使用釘扎263
10.3.5 Chrome公鑰釘扎264
10.3. 6 Microsoft Enhanced Mitigation Experience Toolkit 265
10.3.7 http公鑰釘扎擴展265
10.3.8 DANE 267
10.3.9證書密鑰可信保證270
10.3.10證書頒發機構授權271
第11章OpenSSL 272
11.1入門272
11.1. 1確定OpenSSL版本和配置273
11.1.2構建OpenSSL 274
11.1.3查看可用命令275
11.1.4創建可信證書庫276
11.2密鑰和證書管理277
11.2.1生成密鑰277
11.2.2創建證書籤名申請280
11.2.3用當前證書生成CSR文件282
11.2.4非交互方式生成CSR 282
11.2.5自簽名證書283
11.2.6創建對多個主機名有效的證書283
11.2.7檢查證書284
11.2.8密鑰和證書格 轉換286
11.3配置288
11.3.1選擇密碼套件288
11.3.2性能298
11.4創建私有證書頒發機構300
11.4.1功能和限制301
11.4.2創建根CA 301
11.4.3創建二級CA 306
第12章使用OpenSSL進行測試309
12.1連接SSL服務309
12.2測試升級到SSL的協議312
12.3使用不同的握手格式313
12.4提取遠程證書313
12.5測試支持的協議314
12.6測試支持的密碼套件314
12.7測試要求包含SNI的服務器315
12.8測試會話復用316
12.9檢查OCSP吊銷狀態316
12.10測試OCSP stapling 318
12.11檢查CRL吊銷狀態319
12.12測試重新協商321
12.13測試BEAST漏洞322
12.14測試心臟出血323
12.15確定Diffie-Hellman參數的強度325
第13章配置Apache 327
13.1安裝靜態編譯OpenSSL的Apache 328
13.2啟用TLS 329
13.3配置TLS協議329
13.4配置密鑰和證書330
13.5配置多個密鑰331
13.6通配符和多站點證書332
13.7虛擬安全託管333
13.8為錯誤消息保留默認站點334
13.9前向保密335
13.10 OCSP stapling 336
13.10.1配置OCSP stapling 336
13.10.2處理錯誤337
13.10.3使用自定義OCSP響應程序338
13.11配置臨時的DH密鑰交換338
13.12 TLS會話管理338
13.12.1獨立會話緩存338
13.12.2獨立會話票證339
13.12.3分佈式會話緩存340
13.12.4分佈式會話票證341
13.12.5禁用會話票證342
13.13客戶端身份驗證343
13.14緩解協議問題344
13.14.1不安全的重新協商344
13.14.2 BEAST 344
13.14.3 CRIME 344
13.15部署http嚴格傳輸安全345
13.16監視會話緩存狀態346
13.17記錄協商的TLS參數346
13.18使用mod_sslhaf的高級日誌記錄347
第14章配置Java和Tomcat 349
14.1 Java加密組件349
14.1. 1無限制的強加密350
14.1.2 Provider配置350
14.1.3功能概述351
14.1.4協議漏洞352
14.1.5互操作性問題352
14.1.6屬性配置調優354
14.1.7常見錯誤消息355
14.1. 8保護Java Web應用358
14.1.9常見密鑰庫操作362
14.2 Tomcat 366
14.2.1 TLS配置369
14.2.2 JSSE配置371
14.2.3 APR和 OpenSSL配置373
第15章配置Microsoft Windows和IIS 375
15.1 Schannel 375
15.1.1功能概述375
15.1.2協議漏洞377
15.1.3互操作性問題377
15.2 Microsoft根證書計劃379
15.2.1管理系統可信證書庫379
15.2.2導入可信證書380
15.2.3可信證書黑名單380
15.2.4禁用根證書自動更新380
15.3配置380
15.3.1 Schannel配置381
15.3.2密碼套件配置382
15.3.3密鑰和簽名限制384
15.3.4重新協商配置389
15.3.5配置會話緩存390
15.3.6監控會話緩存391
15.3.7 FIPS 140-2 391
15.3.8第三方工具393
15.4保護ASP.NET網站應用的安全394
15.4. 1強制使用SSL 394
15.4.2 Cookie的保護395
15.4.3保護會話Cookie和Forms身份驗證的安全395
15.4.4部署http嚴格傳輸安全396
15.5 Internet信息服務396
第16章配置Nginx 402
16.1以靜態鏈接OpenSSL方式安裝Nginx 402
16.2啟用TLS 403
16.3配置TLS協議403
16.4配置密鑰和證書404
16.5配置多密鑰405
16.6通配符證書和多站點證書405
16.7虛 安全託管406
16.8默認站點返回錯誤消息406
16.9前向保密407
16.10 OCSP stapling 407
16.10.1配置OCSP stapling 408
16.10.2自定義OCSP響應409
16.10.3手動配置OCSP響應409
16.11配置臨時DH密鑰交換410
16.12配置臨時ECDH密鑰交換410
16.13 TLS會話管理411
16.13.1獨立會話緩存411
16.13.2獨立會話票證411
16.13.3分佈式會話緩存412
16.13.4分佈式會話票證412
16.13.5禁用會話票證413
16.14客戶端身份驗證413
16.15緩解協議問題414
16.15.1不安全的重新協商414
16.15.2 BEAST 415
16.15.3 CRIME 415
16.16部署http嚴格傳輸安全415
16.17 TLS緩衝區調優416
16.18日誌記錄416
第17章總結418