汇智动力

售前免费咨询热线: 4 0 0 - 1 8 6 - 0 9 0 5
汇智资讯Huizhi information

当前位置:首页 »Java开发工程师系列讲解——『http协议篇』(2)

Java开发工程师系列讲解——『http协议篇』(2)

日期:2021-11-01 15:31:52 访问量: 来源:

上一篇文章我们介绍了http请求,也知道了它的各个组成部分和特点,这篇文章我们来介绍下https请求协议。

 

为什么要有HTTPS请求?

 

我们知道前端和后端主要的交互方式就是通过http了,而如果你心细的话会发现现在无论各个网站还是各个请求都渐渐的换成了https请求,为什么?安全! 

 

在http请求的时候,不管是get请求还是post请求都无法保证我们传输数据的安全性;要不在url地址上就可以看到传递的参数,要不就是可以通过“检查”模式看到请求的数据,显然这样就意味着我们如果请求的时候传递一些隐秘数据(例如:账号、密码)就可能会导致被抓包数据泄露的危险。

 

所以我们如果想要传输数据的时候能够保证安全怎么办呢?没错就是进行数据加密了!而HTTPS协议就达到了这个目的。

 

什么是HTTPS?

 

HTTPS(全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,它是一种通过计算机网络进行安全通信的传输协议,在HTTP通信的基础上,利用SSL/TLS(都是传输层安全加密协议)建立全信道,加密数据包,从而可以在一些安全敏感的通讯领域广泛使用,例如:登录、交易支付等。

 

HTTPS协议传输的默认端口号为:443

 

https协议特点:

  • 数据加密:采用混合加密技术,保证数据内容在传输的过程中不会被第三方查看;

  • 身份校验:保证数据到达用户期望的目的地,它是通过数字证书认证客户端访问的是自己的服务器

  • 保护数据完整性:使用Hash算法验证数据的完整性从而保证数据没有被第三方篡改。

 

HTTPS采用混合加密,而不是采用单一的非对称加密(RSA)或对称加密(DES等)。加密的过程就是客户端持有非对称加密的公钥(公钥加密的数据需要私钥解密),服务器持有非对称加密的私钥,客户端使用公钥对对称密钥进行加密,将加密后的对称秘钥发给服务器端,服务器端使用私钥对其进行解密,传输过程中使用对称秘钥对传输数据进行加密,这样就保证了客户端和服务器的安全通信。

 

这里存在一个问题,因为客户端的公钥也是需要服务器端进行下发的,就是怎么保证服务器给客户端下发的公钥是真正的公钥,而不是被黑客截获到之后伪造的公钥呢?也就是需要在下发公钥的过程中进行身份验证,验证下公钥是否是我们服务器下发的,怎么验证呢? 那就是使用数字证书了。

 

数字证书:由受信任的数字证书颁发机构CA,在验证服务器身份后颁发。其实就是我们服务器把公钥给第三方CA机构,CA机构一般会把Issuer,Public key(公钥),Subject,Valid from,Valid to等信息以明文的形式写到证书里面作为内容,然后用一个签名算法(类似于指纹生产)计算出这些数字证书内容的一个签名(指纹),并把签名和签名算法用自己的私钥进行加密,然后生成证书给我们返回一个数字证书。

 

HTTPS的缺点:

1. 数字证书需要购买,成本高,并且购买了证书之后,需要技术人员对代理服务器等进行SSL证书设置和维护

2. 请求时间比http长,因为需要在http会话前进行SSL验证有延迟。

3. HTTPS属于加密传输协议,需要进行加密、解密的计算与操作,会占用一定数量的CPU资源,因此,需要的服务器配置、数目相对较高。

 

等其他缺点。

相关阅读Reading

全国热线:400-186-0905

总部热线:028-6547-1147

周一至周日9:30-24:00

我要咨询
汇智动力微信

汇智动力微信公众号