PKI
1、PKI概述
名称:Public Key Infrastructure 公钥基础设施
作用:通过加密技术和数字签名保证信息的安全组成
组成:公钥加密技术、数字证书、CA、RA
2、信息安全三要素
机密性
完整性
身份验证/操作的不可否认性
3、哪些IT领域用到PKI
1)SSL/HTTPS
2)IPsecVPN
3)部分远程访问VPN
4、公钥加密技术
作用:实现对信息加密、数字签名等安全保障
公钥加密,私钥解密,起到加密作用;私钥加密,公钥解密,起到认证作用。。
加密算法:
1)对称加密算法 加解密的密钥一致 DES 3DES AES
x+5=y(对称加密算法)
x是原数据/原文
y是密文
5是KEY/密钥
2)非对称加密算法 RSA DH
*通信双方各自需要一对公私钥
*双方各自交换公钥
*公钥和私钥为互相加解密关系
*公私钥不可互相逆推
HASH算法:MD5 SHA
数字签名:用自己的私钥对摘要(密文HASH转化成的简短序列)加密得出的密文就是数字签名。
5、证书
证书用于保证密钥的合法性
证书格式遵循X.509标准
数字证书包含信息:
使用者的公钥值
使用者标识信息(如名称和电子邮件地址)
有效期(证书的有效时间)
颁发者标识信息
颁发者的数字签名
数字证书由权威公证的第三方机构即CA签发
=============================================
公钥加密技术过程图和描述
龙一有公钥123,私钥321;龙二有公钥ABC,私钥CBA。现在龙一要发送一个信息给龙二,这条信息使用龙二的公钥和RSA算法对信息进行加密(这就保证了信息的机密性,只有龙二的私钥CBA才能解密这条信息)。将密文使用HASH算法生成一段序列(摘要),对这个序列使用龙一的私钥321和RSA算法进行加密,将加密后的序列(数字签名)加到密文前面(这就保证了数据的完整性。HASH算法可以将一个很大的信息转化为极短的字节,唯一且不可逆。但还不够,如果我们加密后的信息被修改且改变了我们的HASH值,我们就无法知晓数据是否完整。因此使用了龙一的私钥321和RSA算法对HASH值进行加密)。龙二接受到信息后,使用龙一的公钥123去解数字签名(也就是加了密的HASH值),解开说明数据完整,再使用龙二的私钥CBA解开密文,这样就得到了完整的信息。
上面使用数字签名的方法能实现数据完整性,如果直接在开始使用HASH算法将信息生成一段序列,然后将这段序列和信息一起用龙二的公钥和RSA算法对信息进行加密,这样能实现数据的完整性吗,我觉得好像也行。
=============================================
上面的公钥加密技术已经能够实现信息安全的三要素,机密性、完整性、身份验证。看起来已经非常完美了,但还是有漏洞。在龙一和龙二交换公钥时,有个人龙三公钥abc,私钥cba,插入进来。龙三用自己的公钥和龙一、龙二的公钥交换。这样龙一的密文和数字签名,龙三都能解开。龙三还可以伪造成龙一给龙二发密文和数字签名。这样就出现了问题。于是就要用到PKI中的数字证书,CA相当于公证机构,RA相当于机构分局。CA也有公钥和私钥。数字证书颁发过程,龙一将自己的公钥等信息发给CA,CA用自己的私钥对龙一的信息加一条数字签名(龙一的信息还是明文),这样就生成了一张数字证书,然后颁发给龙一。然后龙一发送信息的时候将这张数字证书加进去,其他公钥加密过程不变。这条信息传给龙二的时候,龙二要弄清是不是龙一发的。龙二到CA中拿到公钥,使用公钥能解开数字证书中的数字签名说明就是龙一。
=============================================
PKI实验,建立使用https协议的网站,实验使用win-server-2008和win7
将2008(10.1.1.10/24)和win7(10.1.1.11/24)桥接到同一台虚拟交换机上,配置相同的网络号,确保两台虚拟机间能够通信
2008上添加IIS,计算机图标右键管理,找到角色,点击右边的添加角色,找到服务器角色,勾选web服务器,点下一步
勾选应用程序开发,2008不仅要部署为IIS服务器,为了方便还部署为CA服务器(CA为动态网站),点下一步,点安装等待完成。
开始--管理工具--IIS,网站右键添加网站,填写网站信息,点确定
设置网站首页,点击asp-test,找到右边的默认文档点击,添加首页,移到第一位
和刚才安装IIS的步骤相似,在2008上安装DNS服务器,添加区域并加上创建主机名,就可以解析域名了
在win7的浏览器中输入刚才建立网站的域名可以成功访问
现在只是搭建好了一个http协议的网站,为了搭建https协议网站,还需CA服务,参考IIS服务安装步骤,在2008中添加安装Active Directory 证书服务。
勾选证书颁发机构和证书颁发机构Web注册,第一个是创建了一个CA机构,第二个是使用web服务颁发证书。
公司有域才勾选企业,没有用独立就好了,点下一步,我们选择根CA(相当于CA,子CA相当于RA),点下一步,新建私钥(创建一对公私钥),点下一步,选择加密算法和数字签名算法,以及密钥长度,这里就默认
设置CA自己的名称(自己的证书),点下一步,设置CA机构的有效期,点下一步,证书数据库位置和日志位置默认,一直点下一步安装。
开始--管理工具--证书颁发机构,就可以打开查看CA了
IIS要提供安全服务,打开IIS,选中这台服务器,在右边找到服务器证书打开
找到创建证书申请打开,填写一下证书的信息,点下一步
生成一对公钥私钥,这里默认就行了,下一步,将证书放到一个指定的位置,点完成
在2008中打开浏览器输入10.1.1.10/certsrv,打开CA为颁发证书的网站(安装CA的时候默认将证书颁发机构Web注册这个功能放到了IIS创建时就有的那个默认网站中)
点击申请证书,点击高级证书申请(为服务器网站申请的),上面的Web浏览器证书是给客户机申请的
点击使用base64编码...
打开刚才申请证书生成的txt文件,ctrl+a全选复制粘贴到保存的申请中,点提交
开始--管理工具--证书颁发机构,可以看到刚才的那条申请,右键所有任务颁发
再次在2008中打开浏览器输入10.1.1.10/certsrv,点击查看挂起的证书申请的状态,点击保存的申请证书,点击下载证书,下载好后我们可以打开来看看
开始--管理工具--IIS,选中服务器,找到右边的完成证书申请,找到下载证书的路径并加上一个名称,点确定。
选中网站asp-test右键编辑绑定,点添加,填写开启网站https协议的相关信息,点确定。
现在这个网站既能提供http访问,也能提供https访问。选中asp-test我们找到SSL设置,点击要求SSL,这样客户必须用https443访问。下面的客户证书忽略就是客户使用443访问服务器网站不需要到CA注册一个证书,接受就是可有可无,必须就必须要到CA注册一个证书才能通过443访问网站。
到win7看能否使用https://www.along.com访问2008上的网站,显示安全证书由问题就对了,我们的CA没有被信任。
点继续浏览此网站,可以浏览,实验成功
计算机图标右键管理,选中最上面的服务器管理器,找到右边的IE增强的安全配置,再右边有个配置 IE ESC,点击选择禁用,以后就不会弹下面这个框了。
=============================================