node.js搭建https服务器
Posted 追风逐月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js搭建https服务器相关的知识,希望对你有一定的参考价值。
HTTPS简介
HTTPS:(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。另外在https的站点中是不允许请求http的接口的。
HTTPS和HTTP的区别
-
https协议需要到ca申请证书,一般免费证书很少,需要交费。
-
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
-
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
-
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
openssl生成证书文件
只要安装了git客户端就会有openssl
检测openssl是否安装
openssl version -a
接下来开始生成证书:
#1、生成私钥key文件: openssl genrsa -out privatekey.pem 1024 #2、通过私钥生成CSR证书签名 (需要填一些信息、可直接回车) openssl req -new -key privatekey.pem -out certrequest.csr #3、通过私钥和证书签名生成证书文件 openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
执行完第三条命令会看到:
Signature ok
表示生成成功,最终看到如下三个文件
-
privatekey.pem: 私钥
-
certrequest.csr: CSR证书签名
-
certificate.pem: 证书文件
Node.js修改启动文件:app.js
~ vi app.js //最下面 var https = require(‘https‘) ,fs = require("fs"); var options = { key: fs.readFileSync(‘./privatekey.pem‘), cert: fs.readFileSync(‘./certificate.pem‘) }; https.createServer(options, app).listen(3011, function () { console.log(‘Https server listening on port ‘ + 3011); });
启动服务器:
Express server listening on port 3000
Https server listening on port 3011
常见问题:
1、Failed to load resource: net::ERR_INSECURE_RESPONSE
这个是因为你用的证书不正规,让浏览器给拦截掉了,打开你的控制台并点击里面的URL。它将带你进入API页面,然后在页面中接受SSL证书,返回你的应用页面并重新加载。
以上是关于node.js搭建https服务器的主要内容,如果未能解决你的问题,请参考以下文章
iKcamp|基于Koa2搭建Node.js实战(含视频)? 代码分层