1. 需要openssl的支持, openssl本身不提供windows的安装程序,可以按照如下的步骤进行安装:

    (参考https://conetrix.com/Blog/how-to-install-openssl-on-windows-7,并复制到下面)

How-to Install OpenSSL on Windows 7

Download and run the Cygwin installer from their web site:www.cygwin.com.  OpenSSL is not one of that packages that gets installed by default with Cygwin.  The important part of install is choosing OpenSSL as one of the packages you install, because that package is not selected by default.  You do this by searching for "openssl" on the "Select Packages" step, expanding "Net" option, clicking on the "Skip" image so that a version shows, and clicking the "Next" button.  Use the image below as a reference. [more] 

 

安装完后,在cygwin的bin目录下就可以找到openssl.exe.

  1. 写如下的node.js文件。

var https = require('https'),

pem = require('pem');

 

pem.config({

pathOpenSSL: 'C:\\cygwin64\\bin\\openssl.exe'

});

 

pem.createCertificate({days:1, selfSigned:true}, function(err, keys){

https.createServer({key: keys.serviceKey, cert: keys.certificate}, function(req, res){

res.end('o hai!')

}).listen(843);

});

 

如果是linux则不需要pem.config,由于windows下openssl所在的路径不是node.js默认查找的路径,所以需要pem.config.

其他情况下如果openssl的路径不对,也需要pem.config.

如果找不到pem模块,需要运行npm install pem 进行安装。

 

  1. 运行该文件,然后访问https://localhost:843,就可以看到o hi的结果了。

更多node.js SSL的配置见这里: https://nodejs.org/api/https.html

上面的例子用的是自己创建的证书,所以访问的时候会有证书警告。

如果用的是公网可用的证书,则需要参考https://nodejs.org/api/https.html的例子。比如:

const https = require('https');

const fs = require('fs');

 

const options = {

key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),

cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')

};

 

https.createServer(options, (req, res) => {

res.writeHead(200);

res.end('hello world\n');

}).listen(8000);

 

或者

const https = require('https');

const fs = require('fs');

 

const options = {

  pfx: fs.readFileSync('server.pfx')

};

 

https.createServer(options, (req, res) => {

  res.writeHead(200);

  res.end('hello world\n');

}).listen(8000);

Node.js中的HTTPS示例的更多相关文章

  1. node.js中使用https请求报CERT_UNTRUSTED的问题解决

    只要调用了没有受信的https就会报错:CERT_UNTRUSTED 简单的解决方法就是设置环境变量回避非授信证书的问题. 只要在请求的代码之前加上如下代码即可: process.env.NODE_T ...

  2. Node.js中的Session,不要觉得简单哦。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...

  3. 在node.js中使用COOKIE

    node.js中如何向客户端发送COOKIE呢?有如下两个方案: 一.使用response.writeHead,代码示例: //设置过期时间为一分钟 var today = new Date(); v ...

  4. 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick

    [摘要] 官网博文翻译,nodejs中的定时器 示例代码托管在:http://www.github.com/dashnowords/blogs 原文地址:https://nodejs.org/en/d ...

  5. 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick

    目录 Event Loop 是什么? Event Loop 基本解释 事件循环阶段概览 事件循环细节 timers pending callbacks poll阶段 check close callb ...

  6. 前端走进机器学习生态,在 Node.js 中使用 Python

    这次给大家带来一个好东西,它的主要用途就是能让大家在 Node.js 中使用 Python 的接口和函数.可能你看到这里会好奇,会疑惑,会不解,我 Node.js 大法那么好,干嘛要用 Python ...

  7. 在 Node.js 中处理大 JSON 文件

    在 Node.js 中处理大 JSON 文件 场景描述 问题一: 假设现在有一个场景,有一个大的 JSON 文件,需要读取每一条数据经过处理之后输出到一个文件或生成报表数据,怎么能够流式的每次读取一条 ...

  8. node.js中模块和包

    node.js中模块和包 什么是模块 如何创建并加载模块 1. 创建模块 2. 单次加载 3. 覆盖 exports 如何创建一个包 1. 作为文件夹的模块 2. package.json 如何使用包 ...

  9. 初步揭秘node.js中的事件

    当你学习node.js的时候,Events是一个非常重要的需要理解的事情.非常多的Node对象触发事件,你能在文档API中找到很多例子.但是关于如何写自己的事件和监听,你可能还不太清楚.如果你不了解, ...

随机推荐

  1. Acer宏碁暗影骑士3进阶版无法进入系统引导修复

    1.刚开机时,按住alt不放,不停点击F10进入恢复系统: 2.点击疑难解答,选择cmd: 3.以下是cmd命令,//注释不要复制 c: //进入C盘 cd windows cd system32 b ...

  2. luoguP4036 [JSOI2008]火星人 平衡树+hash

    这个操作十分的复杂 但是可以拿平衡树维护 直接二分答案然后用$hash$值判断即可 复杂度$O(10000 * log^2 n + n \log n)$ #include <cstdio> ...

  3. BZOJ.2460.[BeiJing2011]元素(线性基 贪心)

    题目链接 线性基:https://blog.csdn.net/qq_36056315/article/details/79819714. \(Description\) 求一组矿石,满足其下标异或和不 ...

  4. hdu 3397 线段树

    题意: Change operations:0 a b change all characters into '0's in [a , b]1 a b change all characters in ...

  5. java线程本地变量

      ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名为Thre ...

  6. 【洛谷】3469:[POI2008]BLO-Blockade【割点统计size】

    P3469 [POI2008]BLO-Blockade 题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每 ...

  7. Loj10167 HDU2089 不要62

    题目描述 杭州人称那些傻乎乎粘嗒嗒的人为 626262(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士 ...

  8. [Dynamic Language] Python非子包引用

    Python非子包引用 python的搜索路径其实是一个列表(sys.path) 导入模块时python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功. 在项目中如果要引用 ...

  9. 知识共享 - creative commons

    Creative Commons,简称CC,中国大陆正式名称为知识共享,台湾正式名称为创用CC. 是一个非营利组织,也是一种创作的授权方式. 此组织的主要宗旨是增加创意作品的流通可及性,作为其他人据以 ...

  10. Get started with IDA and disassembly SH7058

    http://www.romraider.com/forum/viewtopic.php?f=25&t=6303 All of the 16-bit guidance in the follo ...