源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 586|回复: 27

[JavaScript] 详解HTTPS 的原理和 NodeJS 的实现

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2017-7-4 11:04:28 | 显示全部楼层 |阅读模式
这篇文章主要介绍了详解HTTPS 的原理和 NodeJS 的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

基本原理

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

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

握手流程

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

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

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

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

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

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

Openssl自签名证书的生成

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

# 生成服务器端的非对称秘钥
openssl genrsa -des3 -out server.key 1024

# 生成签名请求的CSR文件
openssl req -new -key server.key -out server.csr

# 自己对证书进行签名,签名的有效期是365天
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

# 去除证书文件的password
cp server.key server.key.orig
openssl rsa -in server.key.orig -out server.key

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

  1. server.crt
  2. server.key

NodeJS建立一个HTTPS的Server

var httpsModule = require('https');
var fs = require('fs');

var https = httpsModule.Server({
   key: fs.readFileSync('/path/to/server.key'),
   cert: fs.readFileSync('/path/to/server.crt')
}, function(req, res){
  res.writeHead(200);
  res.end("hello world\n");
});

//https默认de监听端口时443,启动1000以下的端口时需要sudo权限
https.listen(443, function(err){ 
   console.log("https listening on port: 443");
});

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

回复

使用道具 举报

3

主题

1万

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2022-12-2 10:47:09 | 显示全部楼层
了乐趣了去了去了去了去了
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-3-31 22:35:47 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-10-2 08:22:52 | 显示全部楼层
灌灌灌灌水
回复 支持 反对

使用道具 举报

4

主题

1万

回帖

262

积分

中级会员

Rank: 3Rank: 3

积分
262
发表于 2023-10-17 22:53:14 | 显示全部楼层
好东西一定要看看!
回复 支持 反对

使用道具 举报

4

主题

1万

回帖

60

积分

注册会员

Rank: 2

积分
60
发表于 2024-3-18 12:17:50 | 显示全部楼层
数据库了多久撒快乐的健身卡啦
回复 支持 反对

使用道具 举报

3

主题

1万

回帖

301

积分

中级会员

Rank: 3Rank: 3

积分
301
发表于 2024-5-7 15:44:35 | 显示全部楼层
天天源码社区论坛
回复 支持 反对

使用道具 举报

匿名  发表于 2024-5-7 15:46:35

Спальни Мебели

i1efp6c ·±нУЪ 2023-10-2 08:22
№а№а№а№аЛ


Состав матраса Elysium Firm: объёмный трикотаж, пена ортофом повышенной жесткости 3 см, кокос 3 см, термовойлок, независимый пружинный блок EVS 1000 высота 5 см, термовойлок, независимый пружинный блок EVS 1000 высотой 14 см, термовойлок, пена ортофом повышенной жесткости 2 см https://mebelkindom.ru/deti
  Высота 30 см https://mebelkindom.ru/mebelc
  Нагрузка на спальное место 150 кг https://mebelkindom.ru/standart1
  Жесткость высокая https://mebelkindom.ru/mebelc
  Состав матраса Elysium Medium: объёмный трикотаж, латекс 1 см, меморикс 2 см, пена ортофом высокоэластичная 3 см, термовойлок, независимый пружинный блок EVS 1000 высота 5 см, термовойлок, независимый пружинный блок EVS 1000 высотой 14 см, термовойлок, пена ортофом повышенной жесткости 2 см https://mebelkindom.ru/standart1
  Высота 30 см https://mebelkindom.ru/mattress
  Нагрузка на спальное место 150 кг https://mebelkindom.ru/catalogmebeli
  Средняя жесткость https://mebelkindom.ru/catalogmebeli
  Состав матраса Elysium Soft: объёмный трикотаж, меморикс 2 см, пена ортофом высокоэластичная 3 см, термовойлок, независимый пружинный блок EVS 1000 высота 5 см, термовойлок, независимый пружинный блок EVS 1000 высотой 14 см, термовойлок, пена ортофом повышенной жесткости 2 см https://mebelkindom.ru/oferta
  Высота 30 см https://mebelkindom.ru/catalogmebeli
  Нагрузка на спальное место 150 кг https://mebelkindom.ru/kak_rabotau/
  Жесткость низкая https://mebelkindom.ru/

С вашего ip-адреса поступают необычные запросы https://mebelkindom.ru/mebelc
  Мы хотим убедиться, что вы человек, а не робот https://mebelkindom.ru/oferta

Приобрести это основание было лучшим решением! Сон по ощущениям как в отеле, смотрится стильно и дорого https://mebelkindom.ru/
  За качественное выполнение заказа и быструю доставку спасибо магазину!

Высота: 4 см https://mebelkindom.ru/kak_rabotau/

回复 支持 反对

使用道具

匿名  发表于 2024-5-7 15:47:34

Кровать Детская С




По городу Москва 1 600 ? Плюс от МКАД за 1 км 70 ? По городу Раменское если сумма заказа менее 5 000 руб https://mebelkindom.ru/deti
  500 руб https://mebelkindom.ru/deti
  По городу Раменское если сумма заказа более 5 000 руб https://mebelkindom.ru/mebelc
  бесплатно По России доставка осуществляется через транспортные компании по выбору покупателя доставка до любой транспортной компании в Москве 1 600 руб https://mebelkindom.ru/mattress
  Плюс стоимость доставки транспортной компании от Москвы до нужного города https://mebelkindom.ru/mattress

Основание ровное и жёсткое - для лучшей работы матраса, практически без ограничений по весу и нагрузке на одно спальное место, не деформируется на протяжении всего срока службы СС (а это ~100 лет)! Внешний габарит системы даже при спальном месте 200х200 см компактен - ширина системы равна ширине матраса, длина увеличена всего на 10 см, относительно длины матраса! Ножки увеличенной высоты — лёгкая уборка любым роботом пылесосом! Высокое спальное место — удобно ложиться и вставать, особенно пожилым людям и людям с проблемами опорно-двигательного аппарата (испытывают трудности с сидением и вставанием с низких кроватей) https://mebelkindom.ru/standart1
  Возможность организовать спальное место, идеальное для каждого из пользователей — у каждого спящего не только свой box, но по желанию и свой матрас!

回复 支持 反对

使用道具

匿名  发表于 2024-5-7 15:48:11

Мягкая Стеновая Панель

6q8s6p21 ·±нУЪ 2023-3-31 22:35
°°°°°°°°°°°°°°



Мы реализуем кровати всех популярных технологий: пружинный зависимый и независимый блок https://mebelkindom.ru/mebelc
  Обивка — мебельная ткань (стежка на синтепоне), экокожа, жаккард https://mebelkindom.ru/mebelc
  Дополнительный вариант — огнеупорный жаккард, который актуален в номерах с деревянной отделкой https://mebelkindom.ru/kak_rabotau/
  Вы можете купить в Москве кровать бокс спринг с изготовлением на заказ https://mebelkindom.ru/standart1
  Просто выбираете любой материал обивки, указываете размеры, по которым будут изготовлены блоки https://mebelkindom.ru/mebelc
  Длина всех модулей — 2000 мм https://mebelkindom.ru/mebelc
  По ширине возможны любые варианты в диапазонах 800-2000 мм https://mebelkindom.ru/mattress
  Для любой технологии блока возможна любая обивка и любые размеры в указанных рамках https://mebelkindom.ru/deti

17 июня 2023 https://mebelkindom.ru/mattress


Мягкий топпер с эффектом памяти - эффект расслабления и невесомости во сне! Чехол: несъемный, белоснежный хлопковый трикотаж (хлопок/полиэстер), стёжка на холлофайбере (200 грамм) https://mebelkindom.ru/mattress
  Крепление к матрасу: 4 эластичные ленты по углам топпера (резинки) https://mebelkindom.ru/softpanel
  Высота: 4 см https://mebelkindom.ru/softpanel
  Упаковка: поставляется в сложенном виде, в сумке на молнии https://mebelkindom.ru/oferta

回复 支持 反对

使用道具

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-9-20 16:52 , Processed in 0.204204 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表