《精通PKI 网络安全认证技术与编程实现》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:马臣云,王彦编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:7115178453
  • 页数:452 页
图书介绍:PKI是解决开放式互联网络信息安全需求的成熟体系。PKI体系支持身份认证、信息传输、存储的完整性、消息传输、存储的机密性、操作的不可否认性。本书直接从实战出发,介绍了PKI应用开发过程和细节。全书内容包括PKI基础知识、OpenSSL开发、CrytoAPI开发、Java security开发、电子商务网站应用、PKI技术应用等,涉及C语言、JAVA语言、JSP、ASP/ASP.NET、PHP等开发语言。为了方便读者深入了解PKI,本书都是按照先原理、再讲解、再实战的方式进行,同时全部实例和软件都保存在附属CD中。本书适合PKI应用开发人员、企业网络管理人员、以及大专院校学生阅读。

第1章 PKI基础知识 3

1.1 PKI概述 3

1.2 什么是数字证书 3

1.2.1 数字认证的原理 4

1.2.2 数字认证是如何颁发的 5

1.3 为什么要使用数字证书 5

1.3.1 信息传输的保密性 5

1.3.2 交易者身份的确定性 5

1.3.3 发送信息的不可否认性 5

1.3.4 数据交换的完整性 6

1.4 加密技术 6

1.4.1 对称加密技术 6

1.4.2 非对称加密技术 7

1.5 数字签名技术 8

1.5.1 数字签名技术 8

1.5.2 时间戳技术 9

第2章 OpenSSL入门 13

2.1 OpenSSL概述 13

2.1.1 OpenSSL的组成 13

2.1.2 OpenSSL的优缺点 14

2.2 如何下载编译 15

2.2.1 Windows下编译OpenSSL 15

2.2.2 Linux下编译OpenSSL 17

2.3 如何搭建开发环境 19

2.3.1 Windows下搭建OpenSSL开发环境 19

2.3.2 Linux下搭建OpenSSL开发环境 22

2.4 小结 22

第3章 OpenSSL加密和解密 23

3.1 概述 23

3.2 函数介绍 23

3.2.1 初始化函数 23

3.2.2 加密初始化函数 24

3.2.3 数据加密Update函数 25

3.2.4 数据加密结束函数 25

3.2.5 解密初始化函数 26

3.2.6 数据解密Update函数 26

3.2.7 数据解密结束函数 27

3.3 实例应用——数据加密 27

3.3.1 流程分析 27

3.3.2 实例实现 28

第4章 OpenSSL消息摘要 32

4.1 概述 32

4.2 函数介绍 32

4.2.1 初始化函数 32

4.2.2 设置摘要算法函数 33

4.2.3 摘要Update函数 33

4.2.4 摘要结束函数 33

4.2.5 计算摘要函数 34

4.3 实例应用 34

4.3.1 流程分析 34

4.3.2 实例实现 36

第5章 OpenSSL签名和验证 39

5.1 函数介绍 39

5.1.1 签名初始化函数 39

5.1.2 签名Update函数 40

5.1.3 签名结束函数 40

5.1.4 验证初始化函数 40

5.1.5 验证Update函数 41

5.1.6 验证结束函数 41

5.2 实例应用 41

5.2.1 流程分析 42

5.2.2 实例实现 44

第6章 OpenSSLBase64编解和解码 48

6.1 函数介绍 48

6.1.1 Base64编码初始化函数 48

6.1.2 Base64编码Update函数 48

6.1.3 Base64编码结束函数 49

6.1.4 Base64编码函数 49

6.1.5 Base64解码函数 49

6.1.6 Base64解码初始化函数 50

6.1.7 Base64解码Update函数 50

6.1.8 Base64解码结束函数 50

6.2 实例应用 50

6.2.1 流程分析 51

6.2.2 实例实现 52

第7章 OpenSSL证书操作 56

7.1 函数介绍 56

7.1.1 DER编码转换为内部结构体函数 56

7.1.2 获得证书版本函数 57

7.1.3 获得证书序列号函数 58

7.1.4 获得证书颁发者信息函数 58

7.1.5 获得证书拥有者信息函数 58

7.1.6 获得证书有效期的起始日期函数 59

7.1.7 获得证书有效期的终止日期函数 59

7.1.8 获得证书公钥函数 59

7.1.9 创建和释放证书存储区函数 59

7.1.10 向证书存储区添加证书函数 59

7.1.11 向证书存储区添加证书吊销列表函数 60

7.1.12 创建证书存储区上下文环境函数 60

7.1.13 释放证书存储区上下文环境函数 60

7.1.14 初始化证书存储区上下文环境函数 60

7.1.15 验证证书函数 61

7.2 实例应用 61

7.2.1 流程分析 61

7.2.2 实例实现 64

第8章 SSL/TLS编程 73

8.1 函数介绍 73

8.1.1 初始化SSL算法库函数 73

8.1.2 初始化SSL上下文环境变量函数 74

8.1.3 释放SSL上下文环境变量函数 74

8.1.4 设置SSL证书函数 74

8.1.5 设置SSL私钥函数 75

8.1.6 设置SSL证书函数 75

8.1.7 设置SSL私钥函数 75

8.1.8 检查SSL私钥函数 75

8.1.9 新建SSL句柄函数 76

8.1.10 释放SSL句柄函数 76

8.1.11 设置socket句柄函数 76

8.1.12 建立SSL链接函数 76

8.1.13 接受SSL链接函数 76

8.1.14 获得SSL链接使用的证书 77

8.1.15 发送SSL数据函数 77

8.1.16 读取SSL数据函数 77

8.2 实例应用 77

8.2.1 流程分析 78

8.2.2 实例实现 81

第9章 开发实例——文件保险箱 89

9.1 功能预览 89

9.1.1 文件加密 89

9.1.2 文件解密 90

9.2 流程分析 91

9.2.1 文件加密函数 91

9.2.2 文件解密函数 93

9.3 功能实现 96

第10章 开发实例——安全通信软件 103

10.1 功能预览 103

10.2 流程分析 105

10.2.1 服务端流程分析 105

10.2.2 客户端流程分析 109

10.3 功能实现 112

10.3.1 服务端 112

10.3.2 客户端 119

第11章 开发实例——安全报文系统 126

11.1 功能预览 126

11.1.1 发送方产生安全报文 126

11.1.2 接收方解密安全报文 127

11.2 流程分析 129

11.2.1 发送方流程分析 129

11.2.2 接收方流程分析 133

11.3 功能实现 136

11.3.1 发送方 136

11.3.2 接收方 143

第12章 CryptoAPI开发入门 153

12.1 CryptoAPI的组成 154

12.2 CryptoAPI的优缺点 154

12.3 如何搭建开发环境 154

第13章 密码服务提供者CSP函数 156

13.1 函数介绍 156

13.1.1 连接CSP函数 156

13.1.2 枚举CSP函数 157

13.1.3 获得默认CSP函数 158

13.1.4 设置默认CSP函数 158

13.1.5 获得CSP参数属性函数 158

13.1.6 设置CSP参数函数 159

13.1.7 断开CSP函数 160

13.2 实例应用 160

13.2.1 流程分析 160

13.2.2 实例实现 162

第14章 密钥的产生和交换函数 169

14.1 函数介绍 169

14.1.1 生成函数 169

14.1.2 派生密钥函数 170

14.1.3 销毁密钥函数 171

14.1.4 复制密钥函数 171

14.1.5 导出密钥函数 171

14.1.6 导入密钥函数 171

14.1.7 获得密钥参数函数 172

14.1.8 获得密钥参数函数 173

14.1.9 获得密钥参数函数 174

14.2 实例应用 174

14.2.1 流程分析 174

14.2.2 实例实现 178

第15章 数据的加密和解密函数 183

15.1 函数介绍 183

15.1.1 数据加密函数CryptEncrypt 183

15.1.2 数据解密函数CryptDecrypt 184

15.2 实例应用 184

15.2.1 流程分析 184

15.2.2 实例实现 188

第16章 哈希和数字签名函数 202

16.1 函数介绍 202

16.1.1 创建哈希函数 202

16.1.2 销毁哈希 203

16.1.3 复制哈希函数 203

16.1.4 获得哈希参数函数 203

16.1.5 设置哈希参数函数 204

16.1.6 哈希会话密钥函数 204

16.1.7 哈希数据函数 205

16.1.8 对哈希签名函数 205

16.1.9 对哈希验证签名函数 206

16.2 实例应用 206

16.2.1 流程分析 206

16.2.2 实例实现 210

第17章 证书和证书库函数 217

17.1 函数介绍 217

17.1.1 打开证书库函数 217

17.1.2 关闭证书库函数 218

17.1.3 从证书库枚举证书函数 219

17.1.4 从证书库查找证书函数 219

17.1.5 创建证书句柄函数 220

17.1.6 释放证书句柄函数 220

17.1.7 获得证书句柄属性函数 221

17.1.8 设置证书句柄属性函数 221

17.1.9 获得证书主题名称函数 222

17.2 实例应用 222

17.2.1 流程分析 223

17.2.2 实例实现 224

第18章 开发实例——文件保险箱 228

18.1 功能预览 228

18.1.1 文件加密 228

18.1.2 文件解密 229

18.2 流程分析 230

18.2.1 文件加密函数EncryptFile 230

18.2.2 文件解密函数DecryptFile 234

18.3 功能实现 236

第19章 开发实例—一安全报文系统 246

19.1 功能预览 246

19.1.1 安全报文发送 247

19.1.2 安全报文接收 248

19.2 流程分析 249

19.2.1 发送方流程分析 249

19.2.2 接收方流程分析 255

19.3 功能实现 259

19.3.1 发送方 259

19.3.2 接收方 267

第20章 JavaSecurity开发入门 279

20.1 设计原理和体系结构 279

20.1.1 设计原理 279

20.1.2 体系结构 280

20.2 主要概念 281

20.2.1 引擎类和算法 281

20.2.2 实现和提供者 282

20.2.3 获得实现实例的factory(工厂)方法 282

20.3 主要类和接口 282

20.4 搭建开发环境 282

第21章 Java消息摘要 283

21.1 MessageDigest类函数介绍 283

21.1.1 构造方法 283

21.1.2 生成实例对象函数getInstance(1) 283

21.1.3 生成实例对象函数getInstance(2) 284

21.1.4 获得密码服务提供者函数getProvider 284

21.1.5 计算摘要函数update(1) 284

21.1.6 计算摘要函数update(2) 284

21.1.7 计算摘要函数update(3) 285

21.1.8 计算摘要函数update(4) 285

21.1.9 完成算摘要函数digest(1) 285

21.1.10 完成计算摘要函数digest(2) 285

21.1.11 完成计算摘要函数digest(3) 286

21.1.12 比较摘要值函数isEqual 286

21.1.13 对象重置函数reset 286

21.1.14 获得摘要算法函数getAlgorithm 286

21.1.15 获得摘要值长度函数getDigestLength 287

21.2 实例应用 287

21.2.1 流程分析 287

21.2.2 实例实现 288

第22章 Java加密和解密 291

22.1 KeyGenerator类函数介绍 291

22.1.1 构造方法 291

22.1.2 生成实例对象函数getInstance(1) 291

22.1.3 生成实例对象函数getInstance(2) 292

22.1.4 获得对象密码算法函数getAlgorithm 292

22.1.5 获得密码服务提供者函数getProvider 292

22.1.6 初始化密钥生成器函数init(1) 292

22.1.7 初始化密钥生成器函数init(2) 293

22.1.8 初始化密钥生成器函数init(3) 293

22.1.9 初始化密钥生成器函数init(4) 293

22.1.10 初始化密钥生成器函数init(5) 294

22.1.11 生成密钥函数generateKey 294

22.2 Cipher类函数介绍 294

22.2.1 构造方法 294

22.2.2 生成实例对象函数getInstance(1) 295

22.2.3 生成实例对象函数getInstance(2) 295

22.2.4 获得密码服务提供者函数getProvider 295

22.2.5 获得密码算法函数getAlgorithm 295

22.2.6 获得密码算法分组长度函数getBlockSize 296

22.2.7 获得输出数据的长度函数getOutputSize 296

22.2.8 获得初始化向量函数getIV 296

22.2.9 密码对象初始化函数init(1) 296

22.2.10 密码对象初始化函数init(2) 297

22.2.11 密码对象初始化函数init(3) 297

22.2.12 密码对象初始化函数init(4) 297

22.2.13 计算加密或解密函数update(1) 298

22.2.14 计算加密或解密函数update(2) 298

22.2.15 计算加密或解密函数update(3) 299

22.2.16 计算加密或解密函数update(4) 299

22.2.17 结束加密或解密函数doFin(1) 300

22.2.1 8结束加密或解密函数doFinal(2) 300

22.3 实例应用 300

22.3.1 流程分析 300

22.3.2 实例实现 301

第23章 Java数字签名和验证 305

23.1 KeyPairGenerator类函数介绍 305

23.1.1 构造方法 305

23.1.2 获得密码算法函数getAlgorithm 305

23.1.3 生成实例对象函数getInstance(1) 305

23.1.4 生成实例对象函数getInstance(2) 306

23.1.5 密码对象初始化函数initialize(1) 306

23.1.6 密码对象初始化函数initialize(2) 306

23.1.7 生成非对称密钥对函数genKeyPair和generataKeyPair 307

23.2 Signature类函数介绍 307

23.2.1 构造方法 307

23.2.2 获得签名对象算法函数getAlgorithm 307

23.2.3 生成实例对象函数getInstance(1) 307

23.2.4 生成实例对象函数getInstance(2) 308

23.2.5 初始化验证对象函数initVerify(1) 308

23.2.6 初始化验证对象函数initVerify(2) 308

23.2.7 初始化签名对象函数initSign(1) 309

23.2.8 初始化签名对象函数initSign(2) 309

23.2.9 更新签名或验证数据函数update(1) 309

23.2.10 更新签名或验证数据函数update(2) 310

23.2.11 更新签名或验证数据函数update(3) 310

23.2.12 签名函数sign(1) 310

23.2.13 签名函数sign(2) 310

23.2.14 验证签名函数verify(1) 311

23.2.15 验证签名函数verify(2) 311

23.3 实例应用 312

23.3.1 数字签名实现 312

23.3.2 数字签名验证实现 312

23.3.3 实例实现 313

第24章 keytool和证书类 317

24.1 keytool命令介绍 317

24.1.1 产生密钥对命令genkey 317

24.1.2 向密钥仓库导入证书命令import 318

24.1.3 导出证书请求命令certreq 318

24.1.4 导出证书命令export 318

24.1.5 枚举仓库数据命令list 319

24.1.6 管理密钥仓库命令storepasswd 319

24.1.7 管理密钥仓库命令keypasswd 319

24.1.8 管理密钥仓库命令delete 319

24.2 X509Certicate类函数介绍 319

24.2.1 构造方法 319

24.2.2 检查证书有效期函数checkValidity(1) 320

24.2.3 检查证书有效期函数checkValidity(2) 320

24.2.4 获得证书版本函数getVersion 320

24.2.5 获得证书序列号函数getSerialNumber 320

24.2.6 获得证书颁发者函数getIssuerX500Principal 321

24.2.7 获得证书主题信息函数getSubjectX500Principal 321

24.2.8 获得证书有效起始日期函数getNotBefore 321

24.2.9 获得证书有效期终止日期函数getNotAfter 321

24.2.10 获得DER编码的证书内容函数getTBSCertifiicate 321

24.2.11 获得证书签名值函数getSignature 321

24.2.12 获得证书签名算法名称函数getSigAlgName 322

24.2.13 获得证书密钥用途函数getKeyUsage 322

24.3 X509CRL类函数介绍 322

24.3.1 构造方法 322

24.3.2 getEncoded 322

24.3.3 验证CRL签名函数verify 323

24.3.4 获得CRL版本函数getVersion 323

24.3.5 获得CRL颁发者函数getlssuerX500Principal 323

24.3.6 获得CRL本次更新时间函数getThisUpdate 323

24.3.7 获得CRL下次更新时间函数getNextUpdate 324

24.3.8 获得被吊销的证书函数getRevokedCertificate(1) 324

24.3.9 获得被吊销的证书函数getRevokedCertificate(2) 324

24.3.10 获得被吊销的证书函数getRevokedCertificate(3) 324

24.3.11 获得DER编码的CRL信息函数getTBSCertList 324

24.3.12 获得签名值函数getSignature 325

24.3.13 获得签名算法名称函数getSigAlgName 325

24.4 实例应用 325

24.4.1 流程分析 325

24.4.2 实例实现 326

第25章 Java开发实例——文件保险箱 330

25.1 功能预览 330

25.2 流程分析 332

25.3 功能实现 333

第26章 Java开发实例——安全报文系统 336

26.1 功能预览 336

26.1.1 安全报文发送 336

26.1.2 安全报文接收 337

26.2 流程分析 338

26.2.1 发送方流程分析 338

26.2.2 接收方流程分析 341

26.3 功能实现 343

26.3.1 密钥和证书keystore的生成方法 343

26.3.2 安全报文发送方 344

26.3.3 安全报文接收方 348

第27章 ASP/ASp.Net电子商务网站应用 355

27.1 配置HS的SSL服务器证书 355

27.1.1 生成证书请求 355

27.1.2 安装证书 358

27.1.3 启用SSL 359

27.2 基于数字证书的用户身份认证 360

27.2.1 基于数字证书的用户身份认证的方法 361

27.2.2 ASP/ASp.NET页面获取客户端证书的方法 361

27.3 数据签名处理——基于CAPICOM的应用 366

27.3.1 CAPICOM简介 366

27.3.2 CAPICOM对象——Certiicate对象 367

27.3.3 CAPICOM对象——Certifiicates对象 369

27.3.4 CAPICOM对象——CertifiicateStatus对象 369

27.3.5 CAPICOM对象——Store对象 370

27.3.6 CAPICOM对象——SignedData对象 372

27.3.7 CAPICOM对象——Signer对象 374

27.3.8 CAPICOM对象——Signers对象 374

27.3.9 CAPICOM对象——EnvelopedData对象 374

27.3.10 CAPICOM对象——Recipients对象 375

27.3.11 CAPICOM对象——Algorithm对象 375

27.3.12 CAPICOM对象——其他对象 376

27.3.13 如何在客户端安装部署和调用 376

27.3.14 如何在服务器端安装部署和调用 377

27.4 基于自开发控件应用 378

27.4.1 开发ActiveX控件 378

27.4.2 如何在客户端部署和调用 383

27.4.3 代码示例 384

27.5 开发实例——安全登录 385

27.5.1 登录处理页面(login.apsx.cs) 385

27.5.2 用户页面(main.apsx.cs) 386

27.5.3 出错显示页面(err.apsx.cs) 387

27.5.4 测试功能 387

27.6 开发实例——订单签名 388

27.6.1 签名页面前台(Sign.aspx) 388

27.6.2 签名页面后台(Sign.aspx.cs) 389

27.6.3 签证签名页面前台(verifySign.aspx) 389

27.6.4 验证签名后台页面(verifySign.aspx.cs) 390

27.7 小结 394

第28章 JSP电子商务网站应用 395

28.1 配置JSPWeb服务器的SSL证书 395

28.1.1 生成证书请求文件(CSR) 395

28.1.2 导入证书 397

28.1.3 设置Tomcat支持SSL 397

28.1.4 使用浏览器访问SSL服务器 398

28.2 基于数字证书的用户身份认证 398

28.2.1 基于数字证书的用户身份认证的方法 399

28.2.2 JSP页面获取客户端证书的方法 399

28.3 数据签名处理 401

28.3.1 JSP前台提交签名 401

28.3.2 JSP后台处理签名 402

28.4 开发实例——安全登录 403

28.4.1 SSL登录处理页面(loginjsp) 404

28.4.2 用户主页面(mainjsp) 405

28.4.3 出错处理页面(errjsp) 405

28.4.4 测试代码 405

28.5 开发实例——订单签名 406

28.5.1 签名页面(Signjsp) 406

28.5.2 验证签名页面(verifySignjsp) 407

第29章 PHP电子商务网站应用 410

29.1 配置Apache的SSL证书 410

29.1.1 安装Apache+PHP+SSL 410

29.1.2 配置Apache的SSL证书 412

29.2 基于数字证书的用户身份认证 414

29.2.1 基于数字证书的用户身份认证的方法 414

29.2.2 PHP页面获取客户端证书的方法 415

29.3 数据签名处理 417

29.3.1 PHP前台提交签名 417

29.3.2 PHP后台处理签名 419

29.4 开发实例——安全登录 423

29.4.1 登录页面(login.php) 423

29.4.2 用户主页面(main.php) 424

29.4.3 出错处理页面(err.php) 424

29.4.4 测试代码 424

29.5 开发实例——订单签名 425

29.5.1 签名页面(Sign.php) 425

29.5.2 验证签名页面(verifySign.php) 426

29.5.3 测试代码 427

第30章 颁发和获取数字证书 431

30.1 利用OpenSSL颁发数字证书 431

30.1.1 准备工作 431

30.1.2 建立根证书 431

30.1.3 颁发用户证书 433

30.2 利用Windows证书服务颁发数字证书 434

30.2.1 准备工作 434

30.2.2 安装证书服务并设置CA 434

30.2.3 提交证书请求 435

30.2.4 证书颁发机构处理请求 436

30.2.5 下载证书 437

30.3 通过CA机构获取数字证书 438

第31章 安全电子邮件应用指南 439

31.1 Foxmail安全电子邮件应用 439

31.1.1 为Foxmail邮箱账户配置证书 439

31.1.2 发送和阅读安全电子邮件 440

31.2 Outlook安全电子邮件应用 441

31.2.1 为Outlook邮箱账户配置证书 441

31.2.2 发送和阅读安全电子邮件 442

第32章 代码签名应用指南 445

32.1 什么是代码签名 445

32.2 Windows应用程序代码签名 445

32.2.1 申请代码签名证书 445

32.2.2 使用SignCode.exe对代码签名 446

32.2.3 查看代码签名证书 449

32.3 Java代码签名 449

32.3.1 下载签名工具 449

32.3.2 申请签名证书 449

32.3.3 执行代码签名 450

32.3.4 验证Java代码签名 450

32.4 移动代码签名 450

32.4.1 主流移动操作系统对代码签名的要求 450

32.4.2 代码签名的操作方法 451