这个说起来有点麻烦,但是反正要记下来的,所以还是耐心写了。
进入IE浏览器---internet---内容,可看到“清除SSL状态、证书和发行者“三个选项。将它们排在一起当然是有原因的,是因为SSL(Security Socket Layer)是个网络安全协议,协议在运作的过程中与证书和发行者有关联。有什么样的关联,请进来的朋友耐心点看:
首先讲讲基本的密码学编码体系(还有密码分析学和密钥管理学,这3个统称为密码学),这个体系就是研究如何对文字进行加密。我们将没有加密前的文字叫明文,加密后叫密文。E代码加密(encryption),D代表解密(Decryption),K代表密钥(读音同“蜜月”,它是一个参与加密解密的字符串)。下图就是加密体系模型图:
根据密钥是否相同将整个加密体系分为2类:
1、对称密码体制:即加密密钥和解密密钥相同,实例:DES(data encryption standard),两者都不公开但加密算法公开。发送者用密钥加密明文发过去,接受者用相同的密钥解密得到明文。
2、非对称密码体制:两者不同,称为公钥和私钥。除了私钥不公开,其公钥和加密算法都公开,每一个人都拥有其自己的公钥和私钥。若A要发送数据给B,则A用B的公钥进行加密,而只有B的私钥(不公开)能解密(其他拥有B公钥的人不能解密),则发送过程的安全得到了保证。也可以用私钥进行加密,公钥进行解密,其结果是一样的。
虽然公钥是公开的,但是在现在这个不安全的网络时代下还是不能随意公布个人的公钥,其原因就是在没有第3方证明这个公钥就是某人的情况下任何人都可以谎称它是自己的。所以CA(certification authority,认证中心)诞生了,它的任务就是管理每个人相应的公钥。当需要某个人的公钥时只要向CA申请,它就把这个人的公钥用CA自己的私钥进行加密后发给你,你再用CA的公钥进行解密。
这时就会产生一个问题,就是为何CA发送证书时还要对它用自己的私钥进行加密呢,这样做不是增加了通信成本吗? 其实这样做可以让证书接收者可以鉴定这个证书就是CA所传过来的,且这个证书并没有受到其他人的修改。因为只有用CA的公钥才能进行解密,而如果是其他人传来的或被修改的,其用CA的公钥解密出来的就是一些看不懂的乱码了。这种对数据用私钥加密,公钥解密的过程就是平常听得很多的“数字签名”。
只要了解了以上的基础知识后,就可以接下来继续理解SSL的运作原理了。在我们输入支付宝网站后看到的网址是https://www.alipay.
com,"https"就是一个利用了SSL的应用层协议(我们平常所见到的Http、FTP都是应用层的协议),其过程如下:
- 首先,浏览器向支付宝服务器发送一个建立连接的请求,商量一些参数,比如用什么样的加密算法。(其实就是称为不严格说法的TCP3次握手的过程,严格点应该为1次握手)
- 阿里巴巴公司在支付宝进行交易时设立了一个CA认证中心,商量完之后服务器就将包含了它的公钥的证书(被支付宝CA中心的私钥加了密后发给服务器的)发给浏览器方,浏览器查询下自己的证书列表(下图所示)

- 最后浏览器便随机生成一对对称密钥,再用服务器的公钥对其加密后发给服务器。服务器便可以用自己的私钥解密获得这个对称密钥,以后服务器和浏览器之间便可以用这对密钥在SSL层上将应用层传下来的数据进行加密通信了