首页 > 其他分享 >https通信的整理

https通信的整理

时间:2023-06-15 18:24:33浏览次数:44  
标签:web 浏览器 证书 CA 通信 https 整理 服务器 客户端

通信流程
1.客户端使用https的url访问web服务器,要求与web服务器建立ssl连接。
2.web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
3.客户端浏览器与web服务器协商ssl连接的安全等级,即信息加密的等级。
4.客户端浏览器根据安全等级,建立会话密钥(产生随机对称密钥),然后利用网站的公钥将会话密钥加密,并传送给网站。
5.web服务器利用自己的私钥解密出会话密钥。
6.web服务器与客户端浏览器利用会话密钥对称加密之间的通信。

HTTPS优点
1.比http安全,可防止中间人攻击,确保数据在传输过程中不被窃取、篡改。
缺点
1.握手协议比较耗时,会延长页面加载时间。
2.HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗。
3.证书需要付费。


证书预置和申请
1:客户端浏览器会预置根证书, 里面包含CA公钥
2:服务器去CA申请一个证书
3: CA用自己的签名去签一个证书,指纹信息保存在证书的数字摘要里面, 然后发送给服务器

一次访问流程(简化)
1: 客户端 sayHello
2: 服务器返回证书
3-1: 客户端验证证书内容有效性(过期时间, 域名是否相同等)
3-2: 验证证书的有效性 (是否被串改), 通过本地根证书的CA公钥解密数字摘要,看是否匹配。
3-3:如果数字签名验证通过, 就可以使用服务器证书里面提供的公钥进行下一步通信。


客户端如何验证证书的合法性
首先浏览器读取证书中的证书所有者、有效期等信息进行校验,校验证书的网站域名是否与证书颁发的域名一致,校验证书是否在有效期内
浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发
如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。
如果找到,那么浏览器就会从操作系统中取出颁发者CA 的公钥(多数浏览器开发商发布
版本时,会事先在内部植入常用认证机关的公开密钥),然后对服务器发来的证书里面的签名进行解密
浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比
对比结果一致,则证明服务器发来的证书合法,没有被冒充

标签:web,浏览器,证书,CA,通信,https,整理,服务器,客户端
From: https://www.cnblogs.com/atq999/p/17483735.html

相关文章

  • 服务器nginx配置,端口转发、https配置
    #usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events{worker_connections1024;}http{includemime.types;defau......
  • 关于github.com 报告 fatal: unable to connect to github.com: 无法执行git clone h
    1.通过pinggithub.com,获取其ip地址2.获取其ip后,在系统文件中添加该ip地址 3.保存后,通过在原目标地址上添加gitclone.com拉取:如下所示。gitclonehttps://github.com/xxxx.git-> gitclonehttps://gitclone.com/github.com/xxxx.git ......
  • TRtcHttpServer
    TRtcHttpServerrtc支持delphi和lazarus。unitsock.rtc;//cxg2023-2-12interfaceusessystem.JSON,Json.help,keyValue.serialize,api.router,rtcInfo,global,System.IniFiles,Classes,SysUtils,rtcDataSrv,rtcHttpSrv,rtcConn;varBinApis:TJSONObje......
  • TDiocpHttpServer
    TDiocpHttpServerDIOCP只支持windows。unitsock.DiocpHttpServer;///<author>cxg2023-2-12</author>interfaceusesclasses,system.JSON,json.help,keyValue.serialize,api.router,IniFiles,global,diocp_ex_httpServer,SysUtils;varBinA......
  • TBrookHTTPServer
    TBrookHTTPServerbrook是c写的,以dll供delphi和lazarus调用。unitBrook.HTTPServer;//cxg2023-2-12interfaceusessock.router,System.JSON,Json.help,keyValue.serialize,api.router,BrookHTTPRequest,BrookHTTPResponse,BrookHTTPServer,global,IniFiles,......
  • cross socket ICrossHttpServer
    crosssocketICrossHttpServercrosssocket是delphi跨平台的一个socket库。///<author>cxg2023-2-12</author>///TStream(ARequest.body),autobefreeunitsock.CrossHttpSvr;interfaceusessystem.JSON,json.help,keyValue.serialize,api.router,N......
  • Vue 中 组件通信 - 子传父(自定义事件)
    Vue中组件通信-子传父(自定义事件)Vue中组件通信-子传父(自定义事件)子传父步骤:在子组件的data里面定义好要传递的数据在子组件的模版里面正常使用该数据(一般是通过一定的动作,如点击,滑动等,来自定义事件向父组件传递,这里以click为例)在子组件的methods里面定义this.$......
  • web网络通信
    WEB通信流程静态数据:png,css,js,gif,mp4动态数据:从mysql数据库中读取出来的数据访问DNS服务器,通过DNS获取相应的域名对应IP通过IP对应服务器后,简历TCP连接等浏览器发送完HTTPRequest包后,服务器接收到请求包后才开始处理请求包服务器调用自身服务,返回HTTPResponse(......
  • npm publish 发包报错npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/
    如果出现在发布的时候报这个错,说明你在package.json中登记的name已近被采用了。重名了,所以你得换一个。我们在发布一个包之前,最好拿着这个登记的name去搜一下,如果已近有了,那就要换一个。......
  • https://sci-hub.io/ 吊炸天,各种论文随便下
    https://sci-hub.io/吊炸天,各种论文随便下。这个网站不支持直接搜索,不过不要紧,它提供了一个Chrome插件,安装好后,任何GoogleScholar的搜索结果打开都会跳转到sci-hub的论文下载页面。屌啊屌啊屌啊~插件哪里下载?打开上面的网址就知道!如果sci-hub.io打不开,可以试试https://yaguge.......