Https通讯原理

                                                   Https通讯原理

1.  什么是https

https ,简单的说就是HTTP协议+SSL协议。由于使用HTTP协议传输的数据没有加密,有可能被第三方窃取甚至修改,SSL协议在通信过程中起了两个作用:

1、确保通信双方身份没有伪造,通过数字证书实现。

2、确保与服务器之间的通讯不能被第三方窃取、修改。

了解https通信过程还需知道两种加密方式(非对称加密、对称加密)以及HASH算法 ,客户端与服务器进行安全数据交互之前,需在非对称秘钥的加密保护下生成用于会话期数据加密的对称秘钥。


2.   什么是数字证书

数字证书之于服务器,就像身份证之于人。数字证书由被公认的证书机构颁发。通常操作系统里都会内置一些知名证书机构的根证书。证书主要组成:

证书的发布机构
证书的有效期
公钥
证书所有者(Subject)
签名所使用的算法
这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。解密结果就是签名。
指纹以及指纹算法
这个是用来保证证书的完整性的,也就是说确保证书没有被修改过。 其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上,就说明证书没有被修改过,因为证书的内容被修改后,根据证书的内容计算的出的hash值(指纹)是会变化的。注意,这个指纹会使用"SecureTrust CA"这个证书机构的私钥用签名算法(Signature algorithm)加密后和证书放在一起.

3.   SSL连接建立过程

客户端和服务器交换数据之前有个握手协议,具体过程是:


1.浏览器将自己支持的一套加密规则发送给网站,如RSA加密算法,DES对称加密算法,SHA1摘要算法

2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息(证书中的私钥只能用于服务器端进行解密,在握手的整个过程中,都用到了证书中的公钥和浏览器发送给服务器的随机密码以及对称加密算法)

 

3.获得网站证书之后浏览器要做以下工作:

    a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。

    b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。

    c) 使用约定好的HASH算法计算握手消息(如SHA1),并使用生成的随机数对消息进行加密,最后将之前生成的被公钥加密的随机数密码,HASH摘要值一起发送给服务器

 

4.网站接收浏览器发来的数据之后要做以下的操作:

    a) 使用自己的私钥将信息解密并取出浏览器发送给服务器的随机密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。

    b) 使用随机密码加密一段握手消息,发送给浏览器。

    5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

WebSocket 即时通讯原理是基于 WebSocket 协议的。WebSocket 是一个全双工的协议,允许服务器主动向客户端推送信息,而不需要客户端发起请求。它通过在客户端和服务器之间建立持久的连接来实现实时通讯。 在前端开发中,要使用 WebSocket 实现即时通讯,首先需要掌握 WebSocket API。通过创建一个 WebSocket 对象,可以连接到指定的服务器地址和端口。例如,可以使用以下代码创建 WebSocket 对象: const myWebSocket = new WebSocket(url [, protocols]); 其中,url 是服务器的地址,protocols 是可选的协议数组。创建成功后,WebSocket 对象会自动尝试与服务器建立连接。 WebSocket 协议与传统的 HTTP 协议不同,它不同于 HTTP 的点对点请求-响应模式,而是通过一个初始的握手过程来建立连接,之后双方可以相互发送消息。这种全双工通信的特性使得 WebSocket 成为实时通讯的理想选择。 然而,使用 WebSocket 协议的缺点是在服务器端的配置比较复杂。需要在服务器端实现对 WebSocket 连接的处理和管理,以及消息的处理和推送。 总结起来,WebSocket 即时通讯原理是基于 WebSocket 协议,在前端通过 WebSocket API 创建 WebSocket 对象,并与服务器建立持久连接,实现双向的实时通讯。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [分享即时通讯开发之WebSocket:概念、原理、易错常识、动手实践](https://blog.youkuaiyun.com/wecloud1314/article/details/126134686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [即时通讯WebSocket详解及使用](https://blog.youkuaiyun.com/qq_52337177/article/details/127243229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值