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

Javascript 使用SSL运行vuejs开发服务器(通过HTTPS提供服务),javascript,node.js,ssl,vue.js,Javascript,Node.js,Ssl,Vue.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.sen

重要细节和解决方法:我遇到了这样一个问题:“

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!');
});
这说明HTTPS是在外部主机上强制执行的。我的笔记本电脑上有我的开发环境,周末我用SSH连接到那个盒子里,这就是我昨天遇到这个问题的原因。我在笔记本电脑上远程运行
vuejs
dev服务器,让它收听
0.0.0
并打开桌面上的页面。这就造成了问题

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!');
});
我尝试使用SSH端口转发到
localhost
。这很有效,对我来说是一个可以接受的解决办法

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!');
});
原来的问题仍然有效。我现在就让它开着

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!');
});

我正在使用需要SSL(WebRTC)的JSAPI。所以要进行开发,我需要通过HTTPS运行dev服务器。我如何使用vuejs实现这一点

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!');
});
我已经使用webpack快速启动了该项目。我找到了一些解释如何通过SSL运行webpack dev server的链接,但我不知道如何使用vuejs应用程序来实现这一点。考虑到JavaScript和NPM的所有特性,我非常环保。网页链接都提到一个配置文件,但在我的项目中没有这样的文件。我看到的最接近的是“main.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!');
});
本质上,我所拥有的是以下步骤的结果:

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
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!');
});
mkdir演示
cd演示
npm安装--保存dev vue cli
./node_modules/.bin/vue init vuetifyjs/webpack高级演示
#在此处使用默认值(除了我使用的“仅限运行时”的“Vue build”)
cd演示
npm安装

npm运行dev#要求openssl已安装:

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!');
});
首先,我们必须根据openssl生成的密钥生成SSL证书,并且没有密码短语,因为这将生成错误

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!');
});
nodejs https>node server.js _tls_common.js:87 c、 context.setKey(options.key); ^错误:错误:0907B068:PEM例程:PEM_READ_BIO_PRIVATEKEY:错误的密码读取

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!');
});
进入项目内部,开始创建密钥和证书:

openssl req -nodes -new -x509 -keyout key.pem -out cert.pem -days 365
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!');
});
-节点:根本不加密私钥

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!');
});
安装项目所需的软件包:(-save以添加到package.json)

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!');
});
现在创建服务器文件:

touch server.js
nano 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!');
});
复制/粘贴:到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…

我不知道您是否仍然存在此问题,或者是否有其他人仍然遇到此问题,但我找到了解决方案

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!');
});
按照上面的说明在工作文件夹中生成openssl密钥和证书

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!');
});
/node\u modules/webpack dev server/bin/webpack dev 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!');
});
 key: {

    type: 'string',

    describe: 'Path to a SSL key.',

    group: SSL_GROUP

  },

  cert: {

    type: 'string',

    describe: 'Path to a SSL certificate.',

    group: SSL_GROUP

  },
致:

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!');
});
然后设置

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!');
});
argv.https = true;
这就是我所要做的,让我的代码从
https
服务

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!');
});

请注意,命令行仍将读取,但当您在浏览器中使用
https
时,您的应用程序将在浏览器发出警告后显示

@exhumai Hi我可以帮助您获取node.js,但为什么vue.js会有所不同?我真的不知道。这几乎是我第一次尝试使用像这样的devweb服务器用JS编写应用程序。我还没有单独使用过webpack。我发现vuejs的开发工作流程很容易开始。除了我现在正在努力解决HTTPS问题之外,我只是举了一个基于express fs和HTTPS的示例,添加了基于openssl生成的密钥的证书。您好。您确定需要将Web包开发服务器设置为https吗?dev服务器纯粹用于实时重新加载(当您更改代码时,网站将使用新代码而不进行完全刷新),它仅用于开发,不应与您提到的API交互。也许你需要一个真正的节点服务器是https?另外,Vue与https没有任何关系,Vue是客户端,https是服务器问题。@EricGuan exhuma刚刚启动了一个节点项目,我想他不知道如何在https上驱动webpack,这不是一个真正的问题,我想我理解的是如何从NodeJ自己的SSL添加和生成。对于在https上进行webpack,我们所要做的就是使用https作为参数调用webpack,如下所示:
webpack dev server--https
,在这个cas中,我们不担心如何自己进行这些操作。但是如果你有办法的话,你可以开车带他去。让我知道。关于。但这不使用vuejs服务器吗?我不太明白。我已经有类似的东西使用uwsgi。但这对
.vue
文件没有帮助。@exhuma如果您想要我使用vuejs,我需要您作为服务器的一部分。张贴它。我也需要必要的模块,如果需要。没有什么特别的职位。给我一秒钟。我将编辑原始问题,添加一个如何设置vue项目的示例(基本上是提供一个类似于我的文件树)。@exhuma好的,谢谢,或者将您创建项目的url发送给我;)。我15分钟后就要走了。5个小时后回来。刚刚编辑了原始问题。我几分钟后也要走了。然后这里就要到晚上了。所以我明天可能会看到你的回复:P
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!');
});