ssl和数字证书

SSL(Secure Socket Layer):

是Netscape公司设计的主要用于WEB的安全传输协议。从名字就可以看出它在https协议栈中负责实现上面提到的加密层。因此,一个https协议栈大致是这样的:

image

http中,针对客户端/服务器这种模式,SSL的加密过程:
1. 客户端向服务器发起https请求(比如https://www.google.com/)。
2. 服务器将自己的数字证书发给客户端,数字证书中包含服务器的公钥。关于证书下面在说明。
3. 客户端验证服务器的数字证书,如果无误继续下面的,如果有误则断开连接,并警告用户。
4. 客户端生成自己的密钥对,并用服务器的公钥加密自己的密钥信息(客户端的公钥),将密文发给服务器。
5. 服务器受到客户端的密文,用自己的私钥解密,得到客户端的公钥。
6. c/s之间可以进行安全的加密通讯。

 

服务器也可以要求客户端提供数字证书,从而实现双向认证,不过一般的https应用中,服务器会忽略对客户端的认证。

 

关于数字证书,这里简单的说明他的应用,对于它的实现原理,我也没有研究,就不说了,一般的应用也是可以无视的。作为一个https站点,总是需要与一个证书绑定,证书的来源通常是一个国际认可的机构,或是该机构授权的其他机构,也就是所谓的信任链。至于客户端是否信任该机构的证书,取决客户端是否导入该机构的根证书。看下图

image

posted @ 2010-12-30 17:24  hjtc  Views(450)  Comments(0Edit  收藏  举报