PKI 与 HTTPS 相关

PKI

  PKI 是 Public Key Infrastructure 的缩写,是指用公钥概念和技术来实施和提供安全服务的具有普适性的安全基础设施。PKI 是由硬件、软件、策略和人构成的系统,当完善实施后,能够为敏感通信和交易提供一套信息安全保障,包括保密性、完整性、真实性和不可否认。

  PKI 的基本组成:完整的 PKI 系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建 PKI 也将围绕着这五大系统来着手构建。

  数字证书,是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在 Internet 上验证身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构—— CA 机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。

HTTPS

  HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

实验

系统:Windows 2003 × 2(一台作为 CA 服务器,一台作为 HTTPS 服务器)

搭建 CA 服务器

  1. 查看本机 IP 地址

    本机 IP 地址  10.1.1.245 / 24        网关  10.1.1.1

  2. 安装证书服务

    在“添加和删除程序”→“添加/删除Windows组件”中,添加下图中的服务。除 CA 公用名称外,一路 next 即可安装完毕。

PKI 与 SSL 协议_服务器

   3. 搭建服务器

    打开“开始”→“管理工具”→“Internet信息服务(IIS)”

    在“网站”→“默认网站”上右击,将属性中的 IP 地址配置为本机 IP。

    确认在浏览器中输入 http://10.1.1.245/certsrv/ 可进入证书服务器(如下),则 CA 搭建完毕。

PKI 与 SSL 协议_服务器_02

搭建 HTTPS 服务器

  1. 证书申请

    在 HTTPS 服务器端,仿照上述步骤安装 IIS 服务

    在 IIS 管理器中,点击“网站”→“默认网站”→“属性”→“目录安全性”→“服务器证书”→“新建证书”

    配置 IIS 证书,除公用名称应使用本机 IP 地址外,其余随意填写,一路 next

    在 HTTPS 服务器端进入证书服务器,点击“申请一个证书”→“高级证书申请”→“使用 base64 编码的CMC 或……”

    在“提交一个证书或续订申请”一栏中,粘贴或导入在配置 IIS 证书时保存在 C 盘的 certreq.txt 的内容,提交,随即出现等待管理员审批准的页面。

  certreq.txt 的内容如下:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDQzCCAqwCAQAwaDELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JFSUpJTkcxEDAO
BgNVBAcTB0hBSURJQU4xETAPBgNVBAoTCHRlc3QuY29tMQ0wCwYDVQQLEwRpbmZv
MRMwEQYDVQQDEwoxMC4xLjEuMTk2MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQCgZrRQ5GkrGSiKUiMPbjAJvsqo4VYKgIgzhI4TY0TEjyQSWXO1g6miR7WY5cW2
7MAgOeCIoXJbAznk53mkyMafcXsT7SABrxTFpFLyK4Otswb1bR1tT+2IvzLMzupZ
r6XoxWcWSQ6bK6fzacytIydkgLH0LVnszNEvEbIfYI/TxQIDAQABoIIBmTAaBgor
BgEEAYI3DQIDMQwWCjUuMi4zNzkwLjIwewYKKwYBBAGCNwIBDjFtMGswDgYDVR0P
AQH/BAQDAgTwMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCAMA4GCCqG
SIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzATBgNVHSUEDDAKBggrBgEF
BQcDATCB/QYKKwYBBAGCNw0CAjGB7jCB6wIBAR5aAE0AaQBjAHIAbwBzAG8AZgB0
ACAAUgBTAEEAIABTAEMAaABhAG4AbgBlAGwAIABDAHIAeQBwAHQAbwBnAHIAYQBw
AGgAaQBjACAAUAByAG8AdgBpAGQAZQByA4GJAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAwDQYJKoZIhvcNAQEFBQADgYEAcfZ2JSIsDYKC
DBSvme/pni2n+R2PTfkkITW9zYx4OHc9nsB7B6uxSzzz28b1D/Ki6ktq6l52aEvF
qAYSaQm0bxTB38Er2HEpPV93r8uJkOtZOCPYVTQQ6MUMf39i9n2CSdvld5SwuA6c
PpZitaJjo7B2M026SOCEzJ36EfeCLmU=
-----END NEW CERTIFICATE REQUEST-----

  2. 证书的颁发

    在 CA 服务器端的“管理工具”→“证书颁发机构”→“挂起的申请”中可看到上述提交的申请

    在申请上右键“所有任务”→“颁发”即可许可该申请

  3. 下载并应用证书

    在 HTTPS 服务器端“查看挂起的证书的申请的状态”,可看到证书已审核通过。可将其以 Base64 编码的格式下载至本地。

    再次回到 IIS 管理器,点击“网站”→“默认网站”→“属性”→“目录安全性”→“服务器证书”→“处理挂起的请求并安装证书”

    浏览,找到下载的 .cer 证书,除默认使用 443 端口外一路 next

    进入 IIS 管理器,点击“网站”→“默认网站”→“属性”→“目录安全性”→“(“安全通信”栏中的)编辑”,选择“要求安全通道(SSL)”

    至此,HTTPS 服务器搭建完毕。在 CA 服务器上可以通过 Https 协议访问 HTTPS 服务器的 IP 地址

总结

  本次实验中,共计使用了两台虚拟机(下称为“主机 A”、“主机 B”)

  其中  主机 A 用作搭建 CA 服务器,为 HTTPS 服务器颁发相应的证书;作为用户访问 HTTPS 服务器

      主机 B 用作搭建 HTTPS 服务器

  HTTP 报文抓包后追踪 TCP 流,可看到清晰的明文报文

  HTTPS 报文抓包后追踪 TCP 流,只能看到乱码的密文报文