读完本文,能够明白
HTTPS,也称作HTTP over TLS。就是在安全的传输层上发送的HTTP。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
安全的HTTP是可选的。因此,对于Web服务器发起请求时,我们需要有一种方式来告知Web服务器去执行HTTP的安全协议版本。这是在URL的方案中实现的。
请求一个客户端对某个Web资源执行某事务,它会去检查URL的方案。
在HTTPS中,客户端首先会打开一条到Web服务器端口443的连接。一旦建立TCP连接,客户端和服务器就会初始化SSL层,对加密参数进行沟通,并交换密钥。握手完成后,SSL初始化就完成了,客户端就可以把请求报文发送给安全层了。在将这些报文发送给TCP之前,要先对其加密。
在发送已加密的HTTP报文之前,客户端和服务器需要进行一次SSL握手,在这个握手的过程中,主要完成以下工作:
在访问HTTPS的网站中会看到地址栏左侧会有绿色的小锁头,点击打开可以看到这其实是网站的数字证书。
数字证书简称CA,它由权威机构给某网站颁发的一种认可凭证,这个凭证是被大家(浏览器)所认可的。以数字证书为核心的加密技术(加密传输、数字签名、数字信封等安全技术)可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性及交易的不可抵赖性。使用了数字证书,即使您发送的信息在网上被他人截获,甚至您丢失了个人的账户、密码等信息,仍可以保证您的账户、资金安全。(百度百科)
互联网有太多的服务需要使用证书来验证身份,以至于客户端(操作系统或浏览器等)无法内置所有证书,需要通过服务端将证书发送给客户端。
通过中间人攻击将请求拦截伪造证书等手段来欺骗客户端,存在安全风险。
需要通过数字签名来验证数字证书等合法性。
证书是一个站点的身份证,但是身份证也可以被伪造,为了保证这个证书是真的我们需要数字签名。我们会将证书内容用签名算法生成一个值,我们称之为“摘要”。然后将该摘要用主机的私钥加密,加密后的内容就是我们的数字签名。
当客户端收到附带数字签名的数字证书时,会通过数字证书中的证书签名算法将该证书生成一个摘要,在用服务器众所周知的公钥解密数字签名,看得到的摘要是否相同,相同那就说明证书是真的。
如果公钥解密后得到的摘要与生成的摘要不符那么可能有两种情况
对称加密又称私钥加密,是一种混淆算法,能够在非安全信道上进行安全通信。
非对称加密又称公钥加密,它是另一种方法,使用两个密钥,而不是一个;其中一个密钥是私密的,另一个是公开的。顾名思义,一个密钥用于私人,另一个密钥会被所有人共享。这个两个密钥之间存在一些特殊的数学关系。RSA是目前普遍部署的非对称加密算法。
如对本文有疑问, 点击进行留言回复!!
网友评论