1.概述
全称:Public Key Infram.... 公钥基础设施
作用:通过加密技术和数字签名保证信息的安全
组成:公钥加密技术,数字证书,CA(证书颁发机构),RA(证书颁发机构的分支)
信息安全三要素:机密性,完整性,身份验证/操作的不可否认性
哪些IT领域用到PKI:SSL/HTTPS,IPsecVPN,部分远程访问VPN
2.公钥加密技术
2.1作用
实现对信息加密、数字签名等安全保障
2.2 加密算法解释:
例如:加密算法:x+5=y
x是原数据,要被加密的数据,也叫原文
y是密文,对x这个原数据加密后的数据
5是key,也叫密钥,将原数据变为密文和将密文翻译会原数据的关键
2.3 加密算法种类
2.3.1.对称加密算法
加密和解密的秘钥是一致的,例如DES,3DES,AES
2.3.2.非对称加密算法
非对称算法有:RSA,DH
通信双方各自产生一对公私钥匙。
双方各自交换公钥。
公钥和私钥为互相加密,解密关系,也就是如果用公钥加密原数据,那么私钥才能解密密文。如果是私钥加密原数据,那么公钥解密密文
公钥和私钥不可互相逆推
如上图所示,有两台电脑分别是大飞和小飞,
大飞的公钥是123,私钥是321
小飞的公钥是abc,私钥是cba
在通讯前,大飞将自己的公钥123发给小飞,小飞将自己公钥abc发给大飞
大飞要发“火箭总冠军”的信息给小飞,
那么就会把该信息用小飞发来的公钥abc用例如RSA算法进行加密变为密文才发给小飞,小飞接收到后就用自己的私钥cba配合RSA算法进行解密,反之亦然
2.3.3 最新的非对称加密算法
如上图所示,有两台电脑分别是大飞和小飞,
大飞的公钥是123,私钥是321
小飞的公钥是abc,私钥是cba
在通讯前,大飞将自己的公钥123发给小飞,小飞将自己公钥abc发给大飞
大飞要发“火箭总冠军”的信息给小飞,
那么就会把该信息用小飞发来的公钥abc用例如RSA算法进行加密变为密文1,
并且会用hash算法根据密文1生成一串哈希值,
并且用大飞自己的私钥321利用例如RSA算法对这串哈希值进行加密变为密文2(也叫“数字签名”),
然后把密文1和密文2合并在一起变为真正的密文发给小飞
小飞接收后,会把密文分为两段进行解析,密文1则用小飞自己的私钥通过RSA算法进行解析,然后再把解密出来的内容用hash算法生成对应的哈希值1
密文2因为用的是大飞的私钥进行加密的,所以则用大飞传过来的公钥通过RSA算法进行解密变为哈希值2
最后对比哈希值1与哈希值2是否相同,如果相同则证明数据传输过程中并没有被修改过,那么则采用解密出来的明文,反之亦然
2.3.4 HASH算法
作用:验证数据完整性
算法有:MD5,SHA
HASH算法是不可逆的
生成的HASH值也叫摘要
3.数字证书
作用:保证公钥的合法性
证书格式遵循X.509标准
包含的信息:
使用者的公钥值
使用者的标识信息(如名称,电邮地址)
有效期(证书的有效时间)
颁发机构的标识信息
表发机构的数字签名
数字证书由权威公正的第三方机构即CA签发
图解:
大飞有公钥123,私钥321,ip:10.1.1.1
公安局有公钥666,私钥999
小飞有公钥abc,私钥cba
大飞要先在公安局(CA,RA)用自己的公钥123和IP地址10.1.1.1报备,公安局会用自己的私钥999加密大飞送来的ip地址和公钥,从而形成“数字证书”给大飞
得到公安局给的“数字证书”后,大飞对小飞发信息(如第2.3.3章节所述流程)并且发送的信息还携带着公安局颁发的“数字证书”
小飞得到该信息后,发现有“数字证书”,所以就去跟公安局发信息得到公安局公钥666来解密该数字证书,发现数字证书中所记录的大飞的公钥和IP地址与现在与自己交流的大飞的ip地址和其发来的公钥一致,从而使得小飞安心地与大飞进行通讯(因为大飞在公安局报备过)
如果发现数字证书中所记录的大飞的公钥和IP地址与现在与自己交流的大飞的ip地址和其发来的公钥不一致,那么小飞就会弹出窗口告知小飞,从而让小飞可以选择继续与现在的大飞进行交流或者拒绝后续交流
4.数字签名
用自己的私钥对摘要(HASH值)加密得出的密文就是数字签名
5.PKI案例(SSL设置为“忽略”或“接受”)
win2008服务端(已经有DNS环境)
交换机和IP地址配置
交换机是VMnet2
IP地址:
10.1.1.1
子网掩码:
255.255.255.0
DNS地址指向自身:
127.0.0.1
安装IIS的web服务环境
“计算机”右键,选择“管理”
选择“角色”,然后点击“添加角色”
选择“服务器角色”,勾选“Web服务器IIS”
直接点击“下一步”
可以发现,“应用程序开发”是关于部署动态网站才用到的东西,因为本案例win2008的其中一个身份是CA服务器(颁发证书的),而CA服务器的入口是个动态网站,因此要把“应用程序开发”勾选上,从而营造支持动态网站部署的环境
另外可以发现,这里有个“FTP服务器”的选项,因为本案例不涉及FTP部署,所以没有勾上
点击“安装”
直接点击“关闭”
此时会发现,角色一栏多了个“Web服务器IIS”
在“管理工具”打开IIS服务器管理窗口,这里的默认网站“Default Web Site”要保持正常的启动状态,
因为待会儿CA服务器要征用该站点
部署普通网站
“E:\web\web1”这个web1是网站文件夹,里面只有一个网页index.html
对着IIS管理器的“网站”右键,选择“添加网站”
设置好该网站的所有参数后,点击“确定”
网站新建成功后,你要设置默认的首页,此时你要双击“默认文档”
点击“添加”,将你的网站文件夹里的要设置为默认首页的html文件名字添加到列表中,然后再将该名字上移到顶部
部署DNS
打开DNS管理器,对着“正向查找区域”右键,选择“新建区域”
当你的区域新建好后,选定指定的区域,这里是qf.com这个区域,
然后在右侧空白处右键,选择“新建主机”
这里的设置与IIS的关于该网站的设置保持一致
DNS关于该网站的解析部署,已经完成
部署CA服务器
对着“计算机”右键,选择“管理”,
在弹出的界面选择“角色”,然后点击“添加角色”,
勾选“Active Directory证书服务”,点击“下一步”
直接点击“下一步”
勾选“证书颁发机构Web注册”,此时会弹出窗口,该窗口的意思是,CA服务器要建立在IIS的Web服务器功能上,所以要求你把IIS也安装了,
此时你只管点击“添加所需的角色服务”
“证书颁发机构Web注册”被正式勾上,直接点击“下一步”
如果你的win2008没有安装域环境,那么“企业”选项是不可点选的,此时你要点选“独立”选项
因为win2008并没有上级的CA服务器,所以选择“根CA”,
这里的“子级CA”其实相当于之前所说的RA
因为没有已存在的公钥和私钥,所以这里选择“新建私钥”
设置加密算法(这里选的是RSA),秘钥长度(越长越安全但是解析的速度会变慢),哈希算法(这里选择了SHA),
建议保持默认,直接下一步
这里是自定义设置这个公安局的名字,也就是证书的名字,建议直接下一步
CA有效期设置,意思是在2028/8/10 11:54之后,所有该CA服务器颁发出去的证书将会失效
直接“下一步”
直接“下一步”
直接“下一步”
直接点击“安装”
安装完成后,你会发现在IIS服务器的“Default Web Site”这个内置的默认网站下面多出一堆与CA服务器相关的东西
在“管理工具”,点击“证书颁发机构”即可打开CA管理窗口
IIS服务器创建CA证书申请文件
打开IIS管理器,选择顶部的Win2008(计算机名字),右侧列表双击“服务器证书”
点击“创建证书申请”
自定义证书申请,这里的内容都是可以自定义设置的,
唯一注意的是,“通用名称”这里写上,待会儿生成的证书申请文件是给IIS服务器底下的哪个网站用的,就把该网站的完全限定域名写在“通用名称”这里
选择证书的加密形式和位长,建议保持默认即可
设置待会儿生成的申请文件放在哪里,叫啥名字,
我这里设置为C:\Users\Administrator\Desktop\test网站证书.txt
也就是说,待会儿申请证书放在桌面,文件名叫test网站证书.txt
关于test.qf.com的CA证书的申请文件已经生成
IIS服务器提交证书申请文件
可以发现,在安装了CA服务器后,IIS管理器的默认网站“Default Web Site”下面多出了一堆关于CA服务器的一堆东西,其中的CertSrv既是默认网站的子网站,也是CA服务器证书申请的入口
此时对着默认网站“Default Web Site”右键,选择“编辑绑定”
此时你会发现,该默认网站是没有主机名(完全限定域名),并且IP地址是“*”,
也就是说,你只需要在浏览器输入win2008的ip地址就可以访问到该默认网站,
所以,如果想访问该默认网站的子网站(CA网站),那么只需要输入
127.0.0.1/CertSrv
或
10.1.1.1/CertSrv
即可
因为要把证书申请文件提交到CA服务器,所以在浏览器输入
127.0.0.1/CertSrv
或
10.1.1.1/CertSrv
此时点击“添加”
再一次点击“添加”
然后点击“关闭”
点击“申请证书”
“Web浏览器证书”:相对于客户机而言的,因为现在有些网站不仅网站服务器要对该网站申请证书,要访问该网站的其他客户机也必须有证书才行的,所以这些客户机就得在这里点击这个“Web浏览器证书”进行证书申请才可以
“电子邮件保护证书”:如果该证书是用在电邮功能上的,就选择这个
“高级证书申请”:因为本案例是为服务器的指定网站申请证书,所以就要选这个
选择第二个选项
将证书申请文件中的内容复制到浏览器的多行文本域处,然后点击“提交”,
这样就完成了证书申请文件的提交操作
CA证书的颁发
此时,打开CA管理器,
点选“挂起的申请”,
会发现,有个未处理的申请,而这个申请就是刚才提交的证书申请,
此时,对着该申请右键,选择“所有任务”中的“颁发”
此时,在浏览器重新输入
127.0.0.1/CertSrv
或
10.1.1.1/CertSrv
进入CA证书网站,然后点击“查看挂起的证书申请的状态”
点击“保存的申请证书”
点击“下载证书”,因为本案例没使用“证书链”
这里的证书链的意思是,由于若干个证书所构成的证书
例如:有个证书,他是由证书A,证书B,证书C构成,而证书A是用来解析证书B的,证书B是用来解析证书C的,因为形成了链条,所以该证书又称为证书链
下载完成后,桌面会多出这么个证书文件
IIS服务器添加证书文件
打开IIS管理器,选择“Win2008”,双击“服务器证书”
点击“完成证书申请”,
选择刚才下载下来的证书文件,然后再自定义个名字myTest
此时你会发现,你的IIS服务器会有两个证书,
第一个证书是没有名称的,因为你的win2008同时也是个CA服务器,这个没名字的证书是CA服务器自己颁发给自己的,是在你安装了CA服务器环境后自动给你设置的
第二个证书myTest就是你刚才为自己的test.qf.com这个网站所设置的证书,也因此,你可以为你的IIS服务器的test.qf.com这个网站从http协议改为https协议了
将网站改为更安全的https协议(使用PKI技术)
在IIS服务器,对着test网站右键,选择“编辑绑定”
点击“添加”
选择“https”,IP地址选为10.1.1.1(本机IP地址),端口自动默认为443(http协议的时候是80端口),把自己的myTest证书添加上
此时,https://test.qf.com也可以访问网站了,
但是还存在一个问题,就是客户仍然可以用http://test.qf.com进行访问,
所以我们要禁用掉http://test.qf.com的访问
选择test网站,然后双击“SSL”设置
把“要求SSL证书”勾上,这样就只能以https://test.qf.com访问该网站了
而下面的
忽略:访问该网站不需要客户机有win2008颁发的CA证书
接受:不管客户机有或没有win2008颁发的CA证书,都可以访问该网站
必须:客户如果没win2008颁发的证书那么就不让访问该网站
本案例选择“忽略”或“接受”皆可以,
然后点击“应用”即可
winxp客户端
效果
如果浏览器输入http://test.qf.com
是不会允许你访问的
浏览器输入https://test.qf.com,
就会弹出窗口问你,是否信任该网站的证书,此时点击“是”
此时就能顺利打开网站
额外知识点
之所以当你访问百度,腾讯,新浪等网站的时候不会弹出窗口询问你是否信任该网站的证书,是因为你的浏览器已经内置了这些大型网站的证书颁发机构了,所以浏览器给你默认地同意信任这些网站的证书
6.PKI案例(SSL设置为“必须”)
win2008服务端(已经有DNS环境)
交换机和IP地址配置
交换机是VMnet2
IP地址:
10.1.1.1
子网掩码:
255.255.255.0
DNS地址指向自身:
127.0.0.1
安装IIS的web服务环境
“计算机”右键,选择“管理”
选择“角色”,然后点击“添加角色”
选择“服务器角色”,勾选“Web服务器IIS”
直接点击“下一步”
可以发现,“应用程序开发”是关于部署动态网站才用到的东西,因为本案例win2008的其中一个身份是CA服务器(颁发证书的),而CA服务器的入口是个动态网站,因此要把“应用程序开发”勾选上,从而营造支持动态网站部署的环境
另外可以发现,这里有个“FTP服务器”的选项,因为本案例不涉及FTP部署,所以没有勾上
点击“安装”
直接点击“关闭”
此时会发现,角色一栏多了个“Web服务器IIS”
在“管理工具”打开IIS服务器管理窗口,这里的默认网站“Default Web Site”要保持正常的启动状态,
因为待会儿CA服务器要征用该站点
部署普通网站
“E:\web\web1”这个web1是网站文件夹,里面只有一个网页index.html
对着IIS管理器的“网站”右键,选择“添加网站”
设置好该网站的所有参数后,点击“确定”
网站新建成功后,你要设置默认的首页,此时你要双击“默认文档”
点击“添加”,将你的网站文件夹里的要设置为默认首页的html文件名字添加到列表中,然后再将该名字上移到顶部
部署DNS
打开DNS管理器,对着“正向查找区域”右键,选择“新建区域”
当你的区域新建好后,选定指定的区域,这里是qf.com这个区域,
然后在右侧空白处右键,选择“新建主机”
这里的设置与IIS的关于该网站的设置保持一致
DNS关于该网站的解析部署,已经完成
部署CA服务器
对着“计算机”右键,选择“管理”,
在弹出的界面选择“角色”,然后点击“添加角色”,
勾选“Active Directory证书服务”,点击“下一步”
直接点击“下一步”
勾选“证书颁发机构Web注册”,此时会弹出窗口,该窗口的意思是,CA服务器要建立在IIS的Web服务器功能上,所以要求你把IIS也安装了,
此时你只管点击“添加所需的角色服务”
“证书颁发机构Web注册”被正式勾上,直接点击“下一步”
如果你的win2008没有安装域环境,那么“企业”选项是不可点选的,此时你要点选“独立”选项
因为win2008并没有上级的CA服务器,所以选择“根CA”,
这里的“子级CA”其实相当于之前所说的RA
因为没有已存在的公钥和私钥,所以这里选择“私钥”
设置加密算法(这里选的是RSA),秘钥长度(越长越安全但是解析的速度会变慢),哈希算法(这里选择了SHA),
建议保持默认,直接下一步
这里是自定义设置这个公安局的名字,也就是证书的名字,建议直接下一步
CA有效期设置,意思是在2028/8/10 11:54之后,所有该CA服务器颁发出去的证书将会失效
直接“下一步”
直接“下一步”
直接“下一步”
直接点击“安装”
安装完成后,你会发现在IIS服务器的“Default Web Site”这个内置的默认网站下面多出一堆与CA服务器相关的东西
在“管理工具”,点击“证书颁发机构”即可打开CA管理窗口
IIS服务器创建CA证书申请文件
打开IIS管理器,选择顶部的Win2008(计算机名字),右侧列表双击“服务器证书”
点击“创建证书申请”
自定义证书申请,这里的内容都是可以自定义设置的,
唯一注意的是,“通用名称”这里写上,待会儿生成的证书申请文件是给IIS服务器底下的哪个网站用的,就把该网站的完全限定域名写在“通用名称”这里
选择证书的加密形式和位长,建议保持默认即可
设置待会儿生成的申请文件放在哪里,叫啥名字,
我这里设置为C:\Users\Administrator\Desktop\test网站证书.txt
也就是说,待会儿申请证书放在桌面,文件名叫test网站证书.txt
关于test.qf.com的CA证书的申请文件已经生成
IIS服务器提交证书申请文件
可以发现,在安装了CA服务器后,IIS管理器的默认网站“Default Web Site”下面多出了一堆关于CA服务器的一堆东西,其中的CertSrv既是默认网站的子网站,也是CA服务器证书申请的入口
此时对着默认网站“Default Web Site”右键,选择“编辑绑定”
此时你会发现,该默认网站是没有主机名(完全限定域名),并且IP地址是“*”,
也就是说,你只需要在浏览器输入win2008的ip地址就可以访问到该默认网站,
所以,如果想访问该默认网站的子网站(CA网站),那么只需要输入
127.0.0.1/CertSrv
或
10.1.1.1/CertSrv
即可
因为要把证书申请文件提交到CA服务器,所以在浏览器输入
127.0.0.1/CertSrv
或
10.1.1.1/CertSrv
此时点击“添加”
再一次点击“添加”
然后点击“关闭”
点击“申请证书”
“Web浏览器证书”:相对于客户机而言的,因为现在有些网站不仅网站服务器要对该网站申请证书,要访问该网站的其他客户机也必须有证书才行的,所以这些客户机就得在这里点击这个“Web浏览器证书”进行证书申请才可以
“电子邮件保护证书”:如果该证书是用在电邮功能上的,就选择这个
“高级证书申请”:因为本案例是为服务器的指定网站申请证书,所以就要选这个
选择第二个选项
将证书申请文件中的内容复制到浏览器的多行文本域处,然后点击“提交”,
这样就完成了证书申请文件的提交操作
CA证书的颁发
此时,打开CA管理器,
点选“挂起的申请”,
会发现,有个未处理的申请,而这个申请就是刚才提交的证书申请,
此时,对着该申请右键,选择“所有任务”中的“颁发”
此时,在浏览器重新输入
127.0.0.1/CertSrv
或
10.1.1.1/CertSrv
进入CA证书网站,然后点击“查看挂起的证书申请的状态”
点击“保存的申请证书”
点击“下载证书”,因为本案例没使用“证书链”
这里的证书链的意思是,由于若干个证书所构成的证书
例如:有个证书,他是由证书A,证书B,证书C构成,而证书A是用来解析证书B的,证书B是用来解析证书C的,因为形成了链条,所以该证书又称为证书链
下载完成后,桌面会多出这么个证书文件
IIS服务器添加证书文件
打开IIS管理器,选择“Win2008”,双击“服务器证书”
点击“完成证书申请”,
选择刚才下载下来的证书文件,然后再自定义个名字myTest
此时你会发现,你的IIS服务器会有两个证书,
第一个证书是没有名称的,因为你的win2008同时也是个CA服务器,这个没名字的证书是CA服务器自己颁发给自己的,是在你安装了CA服务器环境后自动给你设置的
第二个证书myTest就是你刚才为自己的test.qf.com这个网站所设置的证书,也因此,你可以为你的IIS服务器的test.qf.com这个网站从http协议改为https协议了
将网站改为更安全的https协议(使用PKI技术)
在IIS服务器,对着test网站右键,选择“编辑绑定”
点击“添加”
选择“https”,IP地址选为10.1.1.1(本机IP地址),端口自动默认为443(http协议的时候是80端口),把自己的myTest证书添加上
此时,https://test.qf.com也可以访问网站了,
但是还存在一个问题,就是客户仍然可以用http://test.qf.com进行访问,
所以我们要禁用掉http://test.qf.com的访问
选择test网站,然后双击“SSL”设置
把“要求SSL证书”勾上,这样就只能以https://test.qf.com访问该网站了
而下面的
忽略:访问该网站不需要客户机有win2008颁发的CA证书
接受:不管客户机有或没有win2008颁发的CA证书,都可以访问该网站
必须:客户如果没win2008颁发的证书那么就不让访问该网站
本案例选择“必须”,
然后点击“应用”即可
winxp客户端
效果
如果浏览器输入http://test.qf.com
是不会允许你访问的
浏览器输入https://test.qf.com,
就会弹出窗口问你,是否信任该网站的证书,此时点击“是”
因为你的win2008在设置test.qf.com这个网站的“SSL设置”的时候选择了“必须”,所以当客户访问该网站,那么该网站要客户提交对应的证书即可,但可惜的是,现在winxp并没有向win2008的CA服务器申请证书,所以这里也没证书让你选择提交
所以当你按下“确定”,该网站拒绝你的访问
因此,要先获取客户端证书,所以在浏览器输入win2008的CA网站网址
,点击“申请证书”
选择“Web浏览器证书”
输入你的对应的个人信息,然后点击“提交”
点击“是”
客户证书已经申请中
切换到win2008的CA管理器,可以发现“挂起的申请”中多了个CA证书的申请,对着该申请右键,点击“所有任务”中的“颁发”
切换回winxp客户机,浏览器重新输入win2008的CA服务器网址
点击“查看挂起的证书申请的状态”
点击“Web浏览器证书”
点击“安装此证书”
点击“是”
点击“是”
证书安装成功
重新打开浏览器,输入要访问的网址:
此时会弹出窗口,要你向win2008服务器提交客户机的CA证书,这时候按确定
网站访问成功