https是如何做到客户端与服务端之间安全通信

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: https是什么。 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。

https是什么

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。历史上,HTTPS连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在2000年代晚期和2010年代早期,HTTPS开始广泛使用于保护所有类型网站上的网页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。

维基百科上可以看出,https是用于互联网客服端与服务器交互的一个加密协议。

当然,这篇文章不是来讲述https协议的过程,浏览器与服务端几次握手,如何传输数据,与http之间的区别;也不是讲述如何实现一个https协议。这篇文章只是用来通俗的说法,来讲述https是如何做到加密的。


以前看过一个小品,夫妻俩吵架,双方都不想跟对方说话,正好来了个中间人,夫妻俩就让这个中间人来传话,但这个中间人不安好心,老公说一句"不吵了行不行",他传到老婆那就变成“你真丑”。这个现象就是典型的中间人攻击,劫持数据,篡改后再传递,http之间是明文通信,会轻而易举的被中间人攻击,所以是不安全的。

那么如何做到安全传输信息呢。两个字:加密

大家都知道加密分为两种,

  • 对称加密
  • 非对称加密

一句话说明两者的区别:对称加密,加密解密使用相同密钥。非对称加密,加密解密使用不同密钥。
所以我们想要做到http信息安全,一定要选择非对称加密。

ok,当客户端想要获取数据时,服务端获将数据传输给客户端的同时,将非对称加密的私钥传递给客户端。当客户端准备传递给服务端数据的时候,使用这个私钥,加密数据之后,再次传递给服务端。这时候,如果有第三人在中间拦截信息,只能拦截到服务端传递给客户端的数据,客户端传递给服务端的数据,因为使用了密钥加密(非对称性加密,使用公钥加密的数据,只能用私钥解密),中间人无法破解,也就保证了一端数据安全。


那么如何保证服务器给传输到客户端的数据也安全呢,这就涉及到了一个名词数字证书,很多人都听说过数字证书,但是这个数字生证书从本质上是什么?下文我就介绍一下。

数字证书

公开密钥认证(英语:Public key certificate),又称公开密钥证书、公钥证书、数字证书(digital certificate)、数字认证、身份证书(identity certificate)、电子证书或安全证书,是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的数字签名,以保证这个文件的整体内容正确无误。拥有者凭着此文件,可向电脑系统或其他用户表明身份,从而对方获得信任并授权访问或使用某些敏感的电脑服务。电脑系统或其他用户可以通过一定的程序核实证书上的内容,包括证书有否过期、数字签名是否有效,如果你信任签发的机构,就可以信任证书上的密钥,凭公钥加密与拥有者进行可靠的通信。

关注数字证书理论可以直接移步wiki,下面讲一些通俗的说法。数字证书

数字证书是什么,其实可以理解为现实世界的身份证。身份证从哪里来的,国家;那么数字证书从哪里来的,从根证书颁发而来的,两者都是用来验证一个物质存在的身份的真实性。

那么身份证可以被伪造吗,可以;那么数字证书当然也可以被伪造。但是,伪造的身份证可以通过检查吗,从理论上显然不可以,那么伪造的数字证书可以通过检查吗,当查找链路发现不是根证书颁发的证书,就是一个不受保护的证书。

两者都一个相对安全稳定的端,国家身份证的数据库以及根证书存储位置。

现在我想知道根证书是如何给下游颁发子证书的呢。

非对称行加密有个特性,公钥加密的数据只能用私钥解密,而私钥加密的数据只能用公钥解密。所以说,根证书根据申请者的信息生成对应的公钥,发布给服务器,简单的说,这个公钥就可以叫做证书。

所以,当服务器传递给客户端信息的时候,我们使用这个公钥加密一段字符串(token),传递给客户端,这时候客户端进行解密这个字符串(token)并比较这个token是否生效,从而客户端(浏览器)就可以得知,当前的数据是否被劫持,就可以保证数据传递的安全性。

客户端的根证书从哪里来的?有一部分存储在操作系统的证书列表,也有存储在浏览器中。所以说,在操作系统中尽量少的去信任未知证书,如果错误添加,有可能就会造成伪造证书,以及中间人攻击的可能性。

最后用一张最简单的图片总结,https 是如何保证客户端与服务端通信的安全的。

后记

当然https比这复杂的要多,例如随机字符串,多次握手,以及对称加密密钥的传递。数字证书也更复杂,这里为了更浅显的总结并没有一一赘述。

相关文章
|
1月前
|
存储 缓存 安全
https访问提示不安全,证书密钥验证上如何解决
【10月更文挑战第4天】访问提示不安全,证书密钥验证上如何解决
205 2
|
2月前
|
安全 网络协议 网络安全
在实现HTTPS时,有哪些常见的安全协议
在实现HTTPS时,有哪些常见的安全协议
|
1月前
|
编解码 JSON 安全
使用search-guard加固安全为https访问
使用search-guard加固安全为https访问
|
3月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
290 0
|
4月前
|
安全 数据安全/隐私保护
支付系统11 -微信支付11-支付安全-https中的数字证书
支付系统11 -微信支付11-支付安全-https中的数字证书
|
5月前
|
安全 网络安全 数据安全/隐私保护
https比http安全在哪
因此,HTTPS在保护用户隐私、防止数据泄露等方面具有很大的优势,是现代网络安全的重要组成部分。
75 0
|
5月前
|
安全 网络安全 数据安全/隐私保护
深入解析HTTPS:安全机制全方位剖析
深入解析HTTPS:安全机制全方位剖析
|
6月前
|
Web App开发 缓存 前端开发
《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
【5月更文挑战第8天】这篇文档介绍了如何在IE、Chrome和Firefox浏览器中处理不信任证书的问题。作者北京-宏哥分享了如何通过编程方式跳过浏览器的证书警告,直接访问不受信任的HTTPS网站。文章分为几个部分,首先简要介绍了问题背景,然后详细讲解了在Chrome浏览器中的两种方法,包括代码设计和运行效果,并给出了其他浏览器的相关信息和参考资料。最后,作者总结了处理此类问题的一些通用技巧。
155 2
|
5月前
|
JSON 安全 Java
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
70 0
|
6月前
|
缓存 安全 应用服务中间件
蓝易云 - Nginx的HTTPS部署与安全性能优化教程
以上就是在Nginx上部署HTTPS并进行安全性能优化的基本步骤。需要注意的是,这些步骤可能会根据您的具体需求和环境有所不同。
55 0