位置: 编程技术 - 正文

详解HTTPS 的原理和 NodeJS 的实现

编辑:rootadmin

推荐整理分享详解HTTPS 的原理和 NodeJS 的实现,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

基本原理

HTTP协议采用明文传输数据,当涉及敏感信息的传送时,极有可能会受到窃听或者中间人的攻击。HTTPS是HTTP与SSL/TLS的组合,即使用加密通讯以及网络服务器的身份鉴定来进行信息的安全传输。其核心有二:

使用证书对服务器及请求端的身份验证 使用一组对称秘钥加密包括请求头在内的所有信息传输

握手流程

HTTPS链接的建立过程中涉及到服务器端证书、客户端证书(可选)、服务器端的非对称秘钥以及后续通信过程中使用的对称秘钥几个内容。

客户端对HTTPS的地址发出请求,并且将自己的SSL版本号等信息发送给服务器 服务器接收到请求,将服务器证书和公钥等信息返回给客户端 客户端接收到证书后向证书颁发机构验证证书的合法性。如果证书不合法(比如自行签发的证书),则向用户发出警告并确认是否继续,用户可以选择在此时离开终止HTTPS的链接。 证书合法或客户端确认在不安全的情况下继续,客户端生成pre-master secret并且使用2中收到的服务器公钥加密后发送给服务器。如果是使用交互策略的TLS,则同时需要将客户端的证书发送给服务器。服务器检查客户端的证书颁发机构是否在信任列表中,以及证书内容是否合法。若不合法,结束本次会话。 服务器使用私钥解密pre-master secret,然后双方通过一种实现商定好的加密算法生成本次通讯使用的master secret。 双方互相通知对方本次SSL握手成功,其后均使用master secret对传输内容进行加密。

下图简要的说明了这个流程的实现。

详解HTTPS 的原理和 NodeJS 的实现

一开始我也心存疑问:为什么要单独使用另外一组对称秘钥来实现对信息的加密而不直接使用服务器和客户端双方的非对称秘钥呢?我自身非常认同下面这个回答的解释:

传输过程使用对称密钥是因为对称加密比非对称加密的运算量低一个数量级以上,所以这样的方式可以提高双方会话的运算速度。

对于加密算法不是非常了解,希望大牛指点一二。

Openssl自签名证书的生成

HTTPS中一个关键就是证书文件。当然我们可以找专业的第三方机构签发。自己玩玩的话就用自签名的证书就可以了,用户在访问的时候则需要确认安全性问题。 1、生成传输pre-master secret的时候所需要的Server端的私钥,运行时提示需要输入密码,用于对key的加密。以后每次读取此文件的时候,都需要输入指令。

最终在建立HTTPS链接中使用的文件是

server.crt server.key

NodeJS建立一个HTTPS的Server

这里使用的fs.readFileSync方法会阻塞其他进程直到文件的读取完毕,在读取关键的配置文件的时候这样的方法是比较适宜的。

标签: 详解HTTPS 的原理和 NodeJS 的实现

本文链接地址:https://www.jiuchutong.com/biancheng/382135.html 转载请保留说明!

上一篇:详解node如何让一个端口同时支持https与http(node使用)

下一篇:nodejs模块学习之connect解析(nodejs基础教程)

  • 保单税优识别码图片
  • 当月出口的货物,可以过几个月申报吗
  • 财税大管家客服电话
  • 企业所得税资产总额怎么计算
  • 保险公司车险理赔款如何入账
  • 融资租赁担保余值
  • 盈余公积是否必要交税
  • 审计库存现金盘点方法
  • 单位部分承担个人借款利息个税的计算
  • 股息交个人所得税怎么交
  • 一般纳税人资格证明在哪里打印
  • 长期挂账其他应付款违反了哪项制度
  • 税收优惠退回的税金怎么入账
  • 营改增租金收入税率
  • 造价咨询公司在哪里备案
  • 电商平台小规模纳税标准
  • 增值税减少在借方还是贷方
  • 财务报表的总投资怎么算
  • Win10系统cpu性能如何调高 Win10把cpu性能调到极佳的方法
  • mac死机什么原因
  • 企业安全库存是什么
  • 防伪税控技术维护费可以全额抵扣吗
  • 如何处理库存差异问题
  • 商场充值卡发票在哪开
  • 阿查法拉亚盆地 钓鱼
  • composer安装不知道这样的主机
  • 福利费做账分录
  • 三趾鹑是野鸡吗
  • php面向对象的三大特性
  • php db2
  • vue移动端pc端适配方案
  • yii框架连接数据库
  • 用友自动生成凭证怎么操作
  • 增值税已认证抵扣
  • 建行e信通怎么转让
  • vue项目移动端怎么做适配
  • 用php编写一个简单的计算器程序
  • 投资入股的会计处理
  • 认缴制对实务操作的可能影响有哪些?
  • 小规模纳税人利润超过300万
  • python清除变量的命令
  • mysql左连接查询 效率
  • python copyto
  • python中的参数传递
  • 两个城市的社保可以累计吗
  • 给员工购买
  • 对增值税发票开具方面是有啥要求?
  • 个人独资企业一般纳税人享受六税两费
  • 专票时限是多长时间的
  • 新成立的小规模纳税人什么时候报税
  • 财务报表年报里面的利息费用怎么填
  • 企业缴纳车船税吗
  • 购买原材料时发生的不可抵扣的增值税额
  • 主营业务成本可以直接贷银行存款吗
  • 什么叫误餐费
  • 10万以下销售额怎么算
  • 全资子公司合并报表编制
  • 其他应收款明细表怎么填
  • 出表的好处
  • 资本公积金什么时候提取
  • mysql的优化有哪几种
  • 数据库中的冗余度是什么意思
  • 加快Vista中多线程下载速度
  • windows7创建新桌面
  • 进程lsass.exe
  • win7旗舰版没有睡眠设置
  • window10如何修改电脑名称
  • windows mobile应用
  • 装了linux后windows没有了
  • 屏蔽触摸按键什么意思
  • windows安装node.js
  • 手机游戏开发工具app
  • jquery滚动到底部
  • 最新推荐美剧
  • javascript点击按钮改变字体颜色
  • javascript基本语句
  • python3连接pg执行命令
  • jquery页面布局
  • 闵行税务稽查局
  • 河南省医保网上报销流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设