使用SSL证书导致网站速度变慢

发布时间:2018/7/4 11:12:06 打印 字号:

当提到HTTPS协议和SSL证书时,就不得不先提一下HTTP协议。作为一个可能会被淘汰的协议,明文传输和无验证使得它臭名昭著,这种在安全上的缺陷可以轻易的被他人利用于谋取保利,在这一方面,网络运营商无疑要背最大的锅。互联网的普及化,越来越多的隐私数据开始通过网络传输,姓名、密码、身份证、手机号等等,如果继续任由他人获取这些信息 ,不加管理,等同于互联网在退步。于是网景公司设备及了SSL证书,用于对HTTPS协议传输的数据进行加密和验证。

有站长使用SSL证书实现全站HTTPS后,发现网站速度确实变慢了,这是为什么呢?从HTTPS整个工作流程我们可以看到:

①、客户端(下文以浏览器简单代替我们使用的客户端,方便大家理解)首先会将自己的一套加密规则发送给服务器;

②、服务器确定加密算法,然后将服务器的身份信息用过SSL证书发送给浏览器,证书中包括服务器的IP地址、公钥、证书的颁发机构(CA机构)、证书的有效期等等;

③、浏览器获取证书之后开始验证SSL证书的合法性,如CA机构是否可信、证书是否过期、服务器的IP是否与自己请求的一致,如果通过验证,则该证书是被信任的,通常表现为在浏览器的网址前会有一个绿色的小锁头,如果是不被信任,则会提示我们证书不被信任。

此时,浏览器一旦接受证书后,就会产生一串随机的数字,然后使用SSL证书中的公钥进行加密。通过使用约定好的HASH计算握手信息,对把刚才加密过的随机数字通过再次加密发送给服务器。

④、服务器接受到浏览器发送过来的信息,首先使用密码解密浏览器发送过来的握手信息,验证他的HASH,如果一致,使用私钥解密密码。然后使用密码加密一段握手信息,再次发送给浏览器。

⑤、浏览器解密、计算握手消息的HASH,然后与服务器发来的进行对比,如果一致,那么握手过程结束。

如果你以为HTTPS传输数据的过程这么麻烦,那就大错特错,因为人家压根还没开始传输数据,只有经过上述过程,浏览器才能够与服务器正式握手,然后开始传输数据,整个通信过程中的所有数据将使用最先浏览器生成的那串随机数字的加密作为密码,在利用对称加密算法进行加密。

显然,这个过程要比HTTP复杂的多,又是加密又是解密的,还这里验证一下哪里验证一下,要知道HTTP只要发包过去验证一下是不是所要请求的服务器,然后再发包来就可以开始数据传输了。

HTTP与HTTPS相差一个SSL握手的过程,这也直接导致了HTTPS的站点打开会慢很多。但是,随着网络硬件的不断增强,带宽的不断增加,以及站长对服务器、网站其他方面的优化,这个SSL握手过程会慢慢缩短,对于正常网络来说,这个过程我们几乎没有什么感觉,从百度、淘宝等网站来看,似乎HTTP和HTTPS打开速度并没有多少改变。