说到HTTPS和SSL,我们不禁要说HTTP和它们之间的区别。我们对HTTP也就是超文本传输协议并不陌生,但在安全性方面存在一定的缺陷,即缺乏明文传输和消息完整性检测。这种安全漏洞很容易被用来获取个人信息,如手机、信用卡号码等,特别是网上交易、支付等已经非常普遍。为了保证这些私有数据能够被加密,Netscape公司设计了SSL(secure sockets layer)协议对HTTP协议传输的数据进行加密,由此产生了HTTPS。
刚才小编主要介绍了HTTPS和SSL的起源和发展。更多人可能更关心HTTPS是否会影响网站的访问速度?要回答这个问题,我们可能需要从HTTPS的工作原理开始。
在传输数据之前,HTTPS需要在客户端(浏览器)和服务器(网站)之间进行握手。在握手过程中,双方将建立密码信息来加密传输的数据。TLS/SSL协议不仅是一套加密传输协议,也是艺术家精心设计的艺术品。在TLS/SSL协议中,采用了非对称加密、对称加密和哈希算法。握手过程的简单描述如下:
1、浏览器向网站发送一组它支持的加密规则。
2、网站从中选择一组加密算法和哈希算法,并以证书的形式将尽量发送回浏览器。证书包含网站地址、加密公钥、证书颁发机构等信息。
3、获得网站证书后,浏览器应做以下工作:
a) 验证证书的有效性(颁发机构是否合法,证书中包含的网站地址是否与访问的地址一致等)。如果证书是可信的,浏览器栏中将显示一个小锁,否则,将给出证书不可信的提示。
b) 如果证书是可信的,或者用户接受不可信的证书,浏览器将生成随机数量的密码,并使用证书中提供的公钥对其进行加密。
c) 握手消息通过散列计算,生成的随机数用于加密消息。所有先前生成的信息都会发送到网站。
4、网站收到浏览器发送的数据后,应进行以下操作:
a) 使用您自己的私钥解密信息并取出密码。使用密码解密浏览器发送的握手消息,并验证哈希值是否与浏览器发送的哈希值一致。
b) 握手消息用密码加密并发送到浏览器。
5、浏览器解密并计算握手消息的哈希值。如果与服务器发送的散列相同,则握手过程结束,然后所有通信数据将由前一个浏览器生成的随机密码和对称加密算法进行加密。
这里浏览器和网站相互发送加密的握手消息并进行验证,目的是确保双方都获得了相同的密码,并且能够正常地对数据进行加密和解密,并为后续的真实数据传输做一个测试。此外,HTTPS中常用的加密和哈希算法如下:
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES、RC4、3DES
哈希算法:MD5,SHA1,sha256
在握手过程中,使用非对称加密算法对生成的密码进行加密,使用对称加密算法对真实传输的数据进行加密,并使用哈希算法验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,所以在传输过程中采用了非对称加密算法对其进行加密。非对称加密算法将生成公钥和私钥。公钥只能用来加密数据,所以可以随意传输。网站的私钥是用来对数据进行解密的,所以网站会对其私钥进行保护,防止泄露。
如果在TLS握手过程中出现任何错误,加密连接将被断开,从而阻止隐私信息的传输。因为HTTPS非常安全,攻击者找不到开始的地方。
首先,你可以打开这个网站的HTTP页面。你可以看到:
然后打开本网站的HTTPS页面,发现耗时稍大,但实际差异不大:
然后单击安全查看此HTTPS连接的详细信息:
以上是SSL证书对网络速度和网站访问速度的影响分析。当您理解这个原理时,您会发现在SSL证书和HTTP访问之间有一个SSL握手。综上所述,这是以下两个公式。
随着网络带宽的增加和硬件设备的不断改进,SSL握手的实时性可能只有几百毫秒。对于网站的日常访问来说,这种差异几乎是不可能体验到的,所以你完全不用担心HTTPS对速度的负面影响。