使用SSL运行vuejs开发服务器(通过HTTPS提供服务)

时间:2017-10-21 15:19:46

标签: javascript node.js ssl vue.js

重要细节&解决方法:我遇到过这个问题:“Deprecating Powerful Features on Insecure Origins

这说明HTTPS是在外部主机上强制执行的。我在我的笔记本电脑上有我的开发环境,周末我在这个盒子里用SSH,这就是我昨天遇到这个问题的原因。我在笔记本电脑上远程运行vuejs dev服务器,使其听取0.0.0.0并打开桌面上的页面。这导致了问题。

我尝试使用SSH端口转发到localhost。这对我来说是有效的,也是一种可接受的解决方法。

原始问题仍然有效。我现在就把它打开。

我正在使用需要SSL(WebRTC)的JS API。所以要做开发,我需要通过HTTPS运行开发服务器。我怎么能用vuejs做到这一点?

我使用webpack快速启动了该项目。我找到了一些链接,解释了如何通过SSL运行webpack-dev-server,但我不知道如何使用vuejs应用程序。考虑到所有JavaScript和JavaScript,我都非常环保。 NPM。 webpack链接都提到了配置文件,但我的项目中没有这样的文件。我看到的最接近的是“main.js”,但绝对没有配置。

从本质上讲,我所拥有的是以下步骤的结果:

mkdir demo
cd demo
npm install --save-dev vue-cli
./node_modules/.bin/vue init vuetifyjs/webpack-advanced demo

# Use the defaults here (except for "Vue build" I used "Runtime-only")

cd demo
npm install
npm run dev  # <-- This is the command I would like to use SSL in

2 个答案:

答案 0 :(得分:2)

我不知道你是否还有这个问题,或者是否还有其他人遇到过这个问题,但我找到了解决办法。

按照上述说明在工作文件夹中生成openssl密钥和证书。

/node_modules/webpack-dev-server/bin/webpack-dev-server.js 中更改此行:

 key: {

    type: 'string',

    describe: 'Path to a SSL key.',

    group: SSL_GROUP

  },

  cert: {

    type: 'string',

    describe: 'Path to a SSL certificate.',

    group: SSL_GROUP

  },

到:

key: {

    type: 'string',

    describe: fs.readFileSync('key.pem'),

    group: SSL_GROUP

  },

  cert: {

    type: 'string',

    describe: fs.readFileSync('cert.pem'),

    group: SSL_GROUP
  },

然后设置

argv.https = true;

这就是我必须要做的就是从https提供代码。

请注意,命令行仍会显示 http://localhost:8080 ,但是当您在浏览器中使用https时,您的应用会在浏览器发出警告后显示

答案 1 :(得分:1)

要求 openssl 安装:

首先,我们必须根据 openssl 创建的密钥生成SSL证书,如果没有密码短语,则会生成错误。< / p>

  

nodejs https&gt; node server.js   _tls_common.js:87           c.context.setKey(options.key);                     ^错误:错误:0907B068:PEM例程:PEM_READ_BIO_PRIVATEKEY:错误的密码读取...

进入你的项目开始创建关键&amp;证书:

openssl req -nodes -new -x509 -keyout key.pem -out cert.pem -days 365
  

-nodes:根本不加密私钥。

安装项目所需的软件包:( --save to add to package.json)

npm install express --save
npm install https --save
npm install fs --save

现在创建服务器文件:

touch server.js
nano server.js

复制/粘贴:到server.js

var fs = require('fs');
var https = require('https');
var app = require('express')();
var options = {
   key  : fs.readFileSync('key.pem'),
   cert : fs.readFileSync('cert.pem')
};

app.get('/', function (req, res) {
   res.send('Hello World!');
});

https.createServer(options, app).listen(3000, function () {
   console.log('Started!');
});

在这个cas中我们不使用443端口,因为已经被服务使用了,所以我使用任何应用程序都不使用的端口3000 ......