Express本地测试HTTPS的示例代码


Posted in Javascript onJune 06, 2018

我的环境

  1. 亚马逊(AWS)的一个ubuntu虚拟机.
  2. node
  3. openssl

生成证书

输入如下命令会在你的当前文件夹生成localhost.key和localhost.cert.

openssl genrsa -out localhost.key 2048
openssl req -new -x509 -key localhost.key -out localhost.cert -days 3650 -subj /CN=localhost

其中localhost为域名. 想要换成别的域名就直接把上面的所有localhost替换成你的域名.

以我为例, 我的虚拟机的域名是xxx.compute.amazonaws.com, 就以这个域名替换上面所有的localhost, 会生成, ec2-34-220-96-9.us-west-2.compute.amazonaws.com.key ec2-34-220-96-9.us-west-2.compute.amazonaws.com.cert两个文件.

更新

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

如果不想用密码保护私钥, 加上-nodes.

加上-subj '/CN=localhost'可以设置certificate的内容. 将其中的localhost替换成你的域名.

参考:How to create a self-signed certificate with openssl?

代码

想要运行如下代码, 需要先安装包

npm init
npm i -S https express

创建文件index.js, 内容如下.

#!/usr/bin/env node

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

var host = 'xxx.compute.amazonaws.com'; // Input you domain name here.
var options = {
  key: fs.readFileSync( './' + host + '.key' ),
  cert: fs.readFileSync( './' + host + '.cert' ),
  requestCert: false,
  rejectUnauthorized: false
};

var httpApp = express();
var app = express();
app.get('/', function (req, res) {
 res.send('hi HTTPS');
});
httpApp.get('/', function (req, res) {
 res.send('hi HTTP');
});
httpApp.listen(80, function () {
 console.log('http on 80');
});
var server = https.createServer( options, app );

server.listen( 443, function () {
  console.log( 'https on 443' );
} );

启动服务器

sudo node index.js

访问

浏览器中输入http://xxx.compute.amazonaws.com/就会以80端口访问HTTP服务器. 显示hi HTTP.

输入https://xxx.compute.amazonaws.com/就会以443端口访问HTTPS服务器, 显示hi HTTPS.

参考

Self-Signed, Trusted Certificates for Node.js & Express.js

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

Javascript 相关文章推荐
javascript判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
再谈ie和firefox下的document.all属性
Oct 21 Javascript
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
使用jQuery实现返回顶部
Jan 26 Javascript
js实现继承的5种方式
Dec 01 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
vue之数据交互实例代码
Jun 20 Javascript
微信小程序之多文件下载的简单封装示例
Jan 29 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
解决vuex刷新状态初始化的方法实现
Aug 15 Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 Javascript
微信小程序仿美团城市选择
Jun 06 #Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 #jQuery
详解封装基础的angular4的request请求方法
Jun 05 #Javascript
React.js绑定this的5种方法(小结)
Jun 05 #Javascript
微信小程序实现城市列表选择
Jun 05 #Javascript
vue.js将时间戳转化为日期格式的实现代码
Jun 05 #Javascript
如何使node也支持从url加载一个module详解
Jun 05 #Javascript
You might like
对Session和Cookie的区分与解释
2007/03/16 PHP
php合并js请求的例子
2013/11/01 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
C语言面试题
2013/05/19 面试题
应届生简历中的自我评价
2014/01/13 职场文书
综合实践教学反思
2014/01/31 职场文书
小学语文课后反思精选
2014/04/25 职场文书
捐书仪式主持词
2015/07/04 职场文书
宾馆客房管理制度
2015/08/06 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL