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 相关文章推荐
ExtJs的Date格式字符代码
Dec 30 Javascript
javascript级联下拉列表实例代码(自写)
May 10 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
Jan 09 Javascript
Javascript的表单验证长度
Mar 16 Javascript
jQuery生成假加载动画效果
Dec 01 Javascript
jQuery Validate设置onkeyup验证的实例代码
Dec 09 Javascript
jQuery基本筛选选择器实例代码
Feb 06 Javascript
js使用highlight.js高亮你的代码
Aug 18 Javascript
React Native使用Modal自定义分享界面的示例代码
Oct 31 Javascript
JS实现选项卡效果的代码实例
May 20 Javascript
vue.js实现左边导航切换右边内容
Oct 21 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 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
php学习之function的用法
2012/07/14 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
js中style.display=""无效的解决方法
2014/10/30 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
在Python中使用第三方模块的教程
2015/04/27 Python
Python 函数基础知识汇总
2018/03/09 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
外科实习自我鉴定
2013/10/06 职场文书
心理健康教育心得体会
2013/12/29 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
质量管理标语
2014/06/12 职场文书
市级三好学生评语
2014/12/29 职场文书
党小组意见范文
2015/06/08 职场文书
家访教师心得体会
2016/01/23 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP