HTTPS连接过程及安全问题

https是基于ssl+http的进行内容加密、身份验证的网络协议,相比于http更安全。但是这里主要不讨论它们的区别,需要了解请另外查询。

1.tcp三次握手建立连接(https是建立在Tcp协议上的,因此同样需要三次握手建立连接)

2.客户端发送请求到服务端

3.服务端返回数字证书和公钥(服务器搭建https是会申请一个CA证书,并生成一对私钥和公钥)

4.客户端验证证书的安全性,若验证通过,则生成一个随机数(即对称密钥),利
用公钥对其进行非对称加密,发送到服务端

5.服务端利用私钥进行解密,获得随机数,利用随机数对发送的数据进行对称加
密,发送到客户端

6.客户端利用随机数进行解密,获得数据

7.SSL加密建立,以后都用对称加密进行通信

以上是建立https来连接的大概过程,接下来看下是如何通过证书来判断连接是否安全的。
为了实现通过https连接,服务器需要申请一个CA证书。证书的获取有很多种方式:

1.向知名的受认可的CA机构申请(通常价格不菲)。
2.向小机构或非正规机构申请(价格低廉)。
3.自己生成或免费获取

而在各种浏览器中,都会有各自的CA信任列表。当从服务器返回证书时,浏览器会进行检查,如果从列表能查到则认为是安全的(同样会检查访问的域名和证书注册的域名之类的信息),导航栏左侧会显示一个绿色的锁,否则显示为不安全的连接,由用户确定是否继续访问。
这里有一个误区,很多人认为https连接的网站一定是安全的,因为https保证安全性。
由上可以知道,其实https只能对传输的数据进行加密,保证第三方无法获取客户端与服务器交互通信的数据。而不能检验网站的真实及安全性,因为各种网站很轻易就能获取一个CA证书,所以使用https连接的网站不一定安全,如果你访问的本来就是一个钓鱼网站,你的信息同样会被获取。
如果是向知名CA机构申请的CA证书,它会对这个行为负责,如果被颁发证书的域名被用于进行不安全的行为,那么该机构颁发的其它证书同样可能被认为不可靠,所以通常都会谨慎地颁发证书,同时我们可以通过CA机构找到违法的始作俑者。
所以一些钓鱼网站使用的证书要不是免费的,要不是向小机构申请的,通常不会被浏览器所承认(有些机构是正规的,但是浏览器没有将其列进信任列表,同样不会被浏览器所承认),所以会被认为是不安全的连接,因此我们访问不安全的连接时需要注意,也可以查看该证书的颁发机构来判断是否可靠。

你可能感兴趣的:(HTTPS连接过程及安全问题)