位置: 编程技术 - 正文

详解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基础教程)

  • 医院要交什么费用
  • 研发费用成本化和费用化
  • 城建税可以不交吗
  • 待认证进项税期末余额在贷方
  • 持有待售资产是流动资产吗
  • 个人代人开普票个税怎么算
  • 期货交易非法经营
  • 会计凭证可分为哪三类
  • 工资扣款做什么科目
  • 汇算清缴期间费用社保填哪里
  • 境外企业向境内提供国际运输服务核定征收的企业所得税
  • 其他贷款服务的内容包括
  • 银行贷款的纳税申报表指的所得税还是增值税
  • 双倍余额折旧法
  • 管理费用属于什么现金流量项目
  • 人工成本如何分摊到服务成本
  • 归还银行贷款利息分录
  • 记账凭证汇总表和汇总记账凭证有什么区别
  • 研发费用进成本吗
  • 营改增的纳税人
  • 税前可以扣除的业务招待费怎么算
  • 应交增值税是总额吗
  • 本月没开发票怎样报税
  • 自然人股权转让要交什么税
  • 工资扣税标准计算方法
  • 主营业务收入平均增长率计算公式近两年
  • 员工退回多发的工资,是上缴国库还是财政专户
  • 没收的定金 会计分录
  • 如何控制网络速度
  • php加载
  • 因质量问题被扣的货款销售方怎么做账
  • linux系统参数调优
  • php字符串赋值
  • 台式电脑清洗步骤图解
  • php的数组函数
  • php使用memcache
  • 关于减肥的好方法
  • laravel框架中文手册
  • php htmlentities()函数的定义和用法
  • 前端网页设计的三大技术
  • 公司基本户没有开户许可证
  • 命令arp-a
  • phpstudy ftp怎么用
  • 本期应纳税额是怎么算
  • 青苗补偿费归谁所有
  • 关于帝国战争的游戏
  • db2 knowledge center
  • 劳务派遣差额征税政策
  • 个税申报表中的年金是什么意思?
  • 纳税人应按照当期可抵扣进项税额的10%
  • mysql数据类型char
  • 会计政策变更追溯调整的年限
  • 非流动资产处置损失计入什么科目
  • 小企业会计准则跨年红冲
  • 培训学校不退学费找什么部门
  • 个体工商户怎样申报个税流程
  • 房地产公司项目开发流程
  • 财产租赁合同印花税申报期限
  • 新办企业在建期间账务处理
  • 信用减值损失和公允价值变动的区别
  • 交易性金融资产公允价值变动计入
  • 在建工程转长期待摊费用是什么意思
  • 脚手架租赁费发票内容开劳务可以吗
  • 总账的建立分为哪几个步骤
  • sqlserver使用方法
  • mysql三层架构
  • 安装sqlserver2008出现无法安装以下功能
  • mysql分区语句
  • mysql多个group by
  • sqlserver2012序列号
  • windowsxp
  • 如何使用airplay2
  • linux scp命令的用法详解
  • windows8怎么设置锁屏时间
  • bootstrap怎么用
  • jquery实战
  • 网卡流量怎么计算
  • vue的ssr渲染
  • java的file类的常用操作
  • 建筑业甲方代扣代缴增值税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设