https想必大家都不陌生了吧,目前很多网站都提供了https的访问,网上有很多介绍相关的资料,什么SSL,数字证书,数字签名,RSA,MD5等等,这里我想谈谈我们目前所应用的https的机制和安全性,对于一些基本的概念,请大家搜索一下相关资料,非常多。
我先来给大家看个例子,比如我现在访问 https://www.abcd.com,则IE一般情况就会出现如下的提示
如果你点击“是”,则便可以进入到该网站访问,而同时,在你的IE地址栏里会有一把锁,我们不禁要反问,这样真的安全吗?我个人的体会和分析是,这样通常情况下来说,只能是半安全,请听我慢慢道来
HTTPS协议的原理是这样:它只是使用非对称加密的方式加密一个密钥,然后双方使用这个密钥对传输的明文数据进行对称加密。非对称常用的是RSA,对称常用DES等,关于完整性检验等MD5算法这里就不说了。
我先来给大家看个例子,比如我现在访问 https://www.abcd.com,则IE一般情况就会出现如下的提示

如果你点击“是”,则便可以进入到该网站访问,而同时,在你的IE地址栏里会有一把锁,我们不禁要反问,这样真的安全吗?我个人的体会和分析是,这样通常情况下来说,只能是半安全,请听我慢慢道来
HTTPS协议的原理是这样:它只是使用非对称加密的方式加密一个密钥,然后双方使用这个密钥对传输的明文数据进行对称加密。非对称常用的是RSA,对称常用DES等,关于完整性检验等MD5算法这里就不说了。
它们的过程是这样的:
客户端发起连接,向服务器发送ClientHello报文,主要内容包括自己支持的各种算法列表,比如非对成加密的支持哪些,对成加密的支持哪些等等。
服务器收到消息之后,和自己支持的加密算法对比,找出双方都支持的算法,然后服务器把自己的证书,常见的是X509证书,发送给客户端,这个就是ServerHello报文,包含被选中的加密算法,X509证书等内容,证书中包含服务器的公钥等内容。
客户端接受到了证书之后获取服务器的公钥,随即生成一个字符串,使用服务器的公钥加密,发送给服务端。
服务端用自己的私钥解开这个加密串,得到明文。
然后服务器和客户端之间就使用这个串作为密钥,来作对称加密。
这样https的会话连接就建立了