node.js express 启用 https
服务端和客户端各有一对公钥和私钥,使用公钥加密的数据只能用私钥解密,建立https传输之前,客户端和服务端互换公钥。客户端发送数据前使用服务端公钥加密,服务端接收到数据后使用私钥解密,反之亦如此。
公钥私钥的生成可用openssl(linux,mac自带,windows上需要自己安装)工具来生成,具体生成步骤如下
1: 生成服务端客户端公钥私钥
// 生成服务器端私钥
$ openssl genrsa -out server.key 1024
//生成服务端公钥
$ openssl rsa -in server.key -pubout -out server.pem
- 1
- 2
- 3
- 4
- 5
- 6
如果只使用公钥/私钥,会面临一个问题,中间人攻击。在客户端与服务端呼唤公钥的过程中,中间人对服务端充当客户端,对客户端充当服务端的角色。服务端和客户端很难感受到中间人的存在。如下所示
为了应对这种情况,还需要对得到的服务端公钥进行认证,确定这个公钥是来自你访问的网站。证书里包含了服务器的名称,主机名,服务端的公钥,签发证书机构的名称,来自签名颁发机构的签名。在客户端拿到公钥后会对签名的公钥进行检查是否来自目标服务器,这样避免中间人攻击,生成签名证书的过程如下,(需要用户输入的信息随便填写吧,偷偷懒 :)
2: 生成自签名证书
CA(Certificate Authority,数字证书认证中心)
CA的作用是为站点颁发证书,且这个证书有CA通过自己的公钥和私钥实现的签名。通过CA机构颁发证书耗时耗力(贵啊!!!淘宝有单域名证书。。。)。这里使用自签名证书,说白了就说自己扮演CA机构,给自己颁发证书。
//生成CA私钥
$ openssl genrsa -out ca.key 1024
//生成csr文件
$ openssl req -new -key ca.key -out ca.csr
//生成自签名证书
$ openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
//生成server.csr文件
$ openssl req -new -key server.key -out server.csr
//生成带有ca签名的证书
$ openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
使用express和https/http进行建站。
3: demo
var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');
//同步读取密钥和签名证书
var options = {
key:fs.readFileSync('./keys/server.key'),
cert:fs.readFileSync('./keys/server.crt')
}
var app = express();
var httpsServer = https.createServer(options,app);
var httpServer = http.createServer(app);
app.get('/',function(req,res,next){
res.send('Hello Express+https');
});
//https监听3000端口
httpsServer.listen(3000);
//http监听3001端口
httpServer.listen(3001);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
使用chrome访问自签名网站会提示不安全(选择继续就行)
使用脚手架工具生成的代码把app.listen 转接到httsServer.listen就可以了(暂未找到其他方法直接生成使用https的脚手架)
node.js express 启用 https的更多相关文章
- Windows下Node.js+Express+WebSocket 安装配置
Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识
前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...
- node.js + express 初体验【hello world】
[node.js] 一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...
- Node.js Express+Mongodb 项目实战
Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...
- modeJS 深了解(1): Node.js + Express 构建网站预备知识
转载:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp1.html 目录 前言 新建express项目并自定义路由规则 如何提取页面中的 ...
- node.js+express+mongoose实现用户增删查改案例
node.js+express+mongodb对用户进行增删查改 一.用到的相关技术 使用 Node.js 的 express 框架搭建web服务 使用 express 中间件 body-parse ...
- Node.js Express 框架学习
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...
- Node.js Express 框架
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...
随机推荐
- zookeeper java api(使用java代码操作zookeeper)
1 导入相关的pom依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId&g ...
- Solidity字符串拼接实现oraclize动态查询
solidity本身没有字符串拼接功能,但是如果你恰巧要用oraclize api,那么可以使用oraclize api中的字符串拼接方法(strConcat).之所以oraclize api里会有s ...
- Browsersync 简介 and 使用
简介 省时的浏览器同步测试工具,Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面. 曾经我们每改一次的代码,都需要手动去刷新一次 ...
- Python ---- super()使用
Python ---- super() 我们经常在类的继承当中使用super(), 来调用父类中的方法.例如下面: 1 2 3 4 5 6 7 8 9 10 11 12 13 class A: ...
- Asp.net MVC获取访问系统的客户端计算机的主机名和IP地址
string HostName = string.Empty; string ip = string.Empty; string ipv4 = String.Empty; if (!string.Is ...
- openvswitch安装
安装前准备软件包及版本 Gcc pkg-config autoconf automake m4 python2.X 下载OVS软件包 http://openvswitch.org/releases/o ...
- PHP文件的引用
require "文件名" 或 include("文件名") 区别:若所包含文件出现错误,include()产生一个警告,require会导致程序终止
- 编写高质量代码改善C#程序的157个建议——建议58:用抛出异常代替返回错误代码
建议58:用抛出异常代替返回错误代码 CLR异常机制的优点: 正常控制流会被立即中止,无效值或状态不会在系统中继续传播. 提供了统一的处理错误的方法. 提供了在构造函数.操作符重载及属性中报告异常的遍 ...
- Python htmlTestRunner生成测试报告Demo
#该代码段是ReadTxt_demo.py 的代码,用户读取txt 文件中的用户信息. #ReadTxt_demo.py def readTxt(filePath): fo = open(filePa ...
- HTML5移动Web开发实战 PDF扫描版
<HTML5移动Web开发实战>提供了应对这一挑战的解决方案.通过阅读本书,你将了解如何有效地利用最新的HTML5的那些针对移动网站的功能,横跨多个移动平台.全书共分10章,从移动Web. ...