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 相关文章推荐
JS 对象介绍
Jan 20 Javascript
JQuery的Ajax跨域请求原理概述及实例
Apr 26 Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 Javascript
table insertRow、deleteRow定义和用法总结
May 14 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
Dec 26 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
AngularJS 2.0新特性有哪些
Feb 18 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
Mar 18 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 Javascript
layui递归实现动态左侧菜单
Jul 26 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的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
PHP错误处理函数
2016/04/03 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
Python 抓取动态网页内容方案详解
2014/12/25 Python
OpenCV实现人脸识别
2017/04/07 Python
python实现雨滴下落到地面效果
2018/06/21 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
python实现三壶谜题的示例详解
2020/11/02 Python
瑜伽国际:Yoga International
2018/04/18 全球购物
财务经理的岗位职责
2013/12/17 职场文书
美国留学经济担保书
2014/05/20 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
2016教师国培研修感言
2015/12/08 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
500字作文之周记
2019/12/13 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python