Node.js中的HTTPS示例
- 需要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.
- 写如下的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 进行安装。
- 运行该文件,然后访问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); |
或者
|
Node.js中的HTTPS示例的更多相关文章
- node.js中使用https请求报CERT_UNTRUSTED的问题解决
只要调用了没有受信的https就会报错:CERT_UNTRUSTED 简单的解决方法就是设置环境变量回避非授信证书的问题. 只要在请求的代码之前加上如下代码即可: process.env.NODE_T ...
- Node.js中的Session,不要觉得简单哦。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...
- 在node.js中使用COOKIE
node.js中如何向客户端发送COOKIE呢?有如下两个方案: 一.使用response.writeHead,代码示例: //设置过期时间为一分钟 var today = new Date(); v ...
- 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick
[摘要] 官网博文翻译,nodejs中的定时器 示例代码托管在:http://www.github.com/dashnowords/blogs 原文地址:https://nodejs.org/en/d ...
- 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick
目录 Event Loop 是什么? Event Loop 基本解释 事件循环阶段概览 事件循环细节 timers pending callbacks poll阶段 check close callb ...
- 前端走进机器学习生态,在 Node.js 中使用 Python
这次给大家带来一个好东西,它的主要用途就是能让大家在 Node.js 中使用 Python 的接口和函数.可能你看到这里会好奇,会疑惑,会不解,我 Node.js 大法那么好,干嘛要用 Python ...
- 在 Node.js 中处理大 JSON 文件
在 Node.js 中处理大 JSON 文件 场景描述 问题一: 假设现在有一个场景,有一个大的 JSON 文件,需要读取每一条数据经过处理之后输出到一个文件或生成报表数据,怎么能够流式的每次读取一条 ...
- node.js中模块和包
node.js中模块和包 什么是模块 如何创建并加载模块 1. 创建模块 2. 单次加载 3. 覆盖 exports 如何创建一个包 1. 作为文件夹的模块 2. package.json 如何使用包 ...
- 初步揭秘node.js中的事件
当你学习node.js的时候,Events是一个非常重要的需要理解的事情.非常多的Node对象触发事件,你能在文档API中找到很多例子.但是关于如何写自己的事件和监听,你可能还不太清楚.如果你不了解, ...
随机推荐
- window.open()/剪切板ZeroClipboard
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [BZOJ 4591] 超能粒子炮-改
Link: 传送门 Solution: 记录一下推$\sum_{i=0}^k C_n^i$的过程: 其实就是将相同的$i/p$合起来算,这样每个里面都是一个可以预处理的子问题 接下来递归下去算即可 T ...
- python 中__name__ = '__main__' 的作用,到底干嘛的?
python 中__name__ = 'main' 的作用,到底干嘛的? 有句话经典的概括了这段代码的意义: "Make a script both importable and execu ...
- php curl 发送get和post请求示例
<?php final class HttpClient { const TIME_OUT = 10; static function get($url) { $ch = curl_init() ...
- 机器学习(2):Softmax回归原理及其实现
Softmax回归用于处理多分类问题,是Logistic回归的一种推广.这两种回归都是用回归的思想处理分类问题.这样做的一个优点就是输出的判断为概率值,便于直观理解和决策.下面我们介绍它的原理和实现. ...
- Unity消息
GameObject关于Message带有三种方法, gameObject.SendMessageUpwards ("test1",4);gameObject.SendMessag ...
- UVA LIVE-3263 - That Nice Euler Circuit
画一个顶点为偶数的封闭的二维图,当然.这个图能够自交,给出画的过程中的一些轨迹点.求出这个图把二次元分成了几部分,比如三角形把二次元分成了两部分. 这个的话,有图中顶点数+部分数-棱数=2的定律,这是 ...
- 报错:无法从int?转换为int
□ 背景分析 在控制器方法中的一个参数允许为null值:public ActionResult GetByCategory(int? categoryId = null) 当把这里的categoryI ...
- [iOS] UIView的clipsTobounds属性
如题,有两个view: view1,view2view2添加view1到中,如果view2大于view1,或者view2的坐标不全在view1的范围内,view2是盖着view1的,意思就是超出的部份 ...
- Android Gradle Plugin指南(四)——測试
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing 5.Testing(測试) 构建一个測试 ...
